TopCoder problem "FoodCollecting" used in TCHS SRM 46 (Division I Level Two)



Problem Statement

    As a serious strategy-games player, you know how important it is to gather enough food for your army before any invasion. Because of this, you decided to collect at least neededFood units of food for your soldiers.



At the beginning, you have n workers to help you. In a single round, each of your workers gathers one unit of food. At the end of each round, you can trade some of your food for new workers. Hiring a single new worker costs price units of food. You can purchase any amount of new workers as long as you have the food to pay for it.



Return the minimum number of rounds you need to gather at least neededFood units of food.
 

Definition

    
Class:FoodCollecting
Method:gather
Parameters:int, int, int
Returns:int
Method signature:int gather(int neededFood, int n, int price)
(be sure your method is public)
    
 

Constraints

-neededFood, n and price will each be between 1 and 1000, inclusive.
 

Examples

0)
    
10
2
1
Returns: 4
Round 1: Gather 2 units of food. Hire a new worker.

Round 2: Gather 3 units of food. Now you have 4 units.

Round 3: Gather 3 units of food. Now you have 7 units.

Round 4: Gather 3 units of food. Now you have 10 units - enough for your army.
1)
    
22
4
1
Returns: 4
Round 1: Gather 4 units of food. Hire 4 new workers.

Round 2: Gather 8 units of food. Hire 7 new workers.

Round 3: Gather 15 units of food. Now you have 16 units.

Round 4: Gather 15 units of food. Now you have 31 units - enough for your army.
2)
    
60
5
6
Returns: 11
3)
    
500
249
1000
Returns: 3

Problem url:

http://www.topcoder.com/stat?c=problem_statement&pm=8239

Problem stats url:

http://www.topcoder.com/tc?module=ProblemDetail&rd=10801&pm=8239

Writer:

Rydberg

Testers:

PabloGilberto , brett1479 , Olexiy , ivan_metelsky

Problem categories:

Simple Math, Simple Search, Iteration