Task
Caring for a plant can be hard work, but since you tend to it regularly, you have a plant that grows consistently. Each day, its height increases by a fixed amount represented by the integer upSpeed. But due to lack of sunlight, the plant decreases in height every night, by an amount represented by downSpeed.
Since you grew the plant from a seed, it started at height 0 initially. Given an integer desiredHeight, your task is to find how many days it’ll take for the plant to reach this height.
Example
For upSpeed = 100, downSpeed = 10, and desiredHeight = 910, the output should be
growingPlant(upSpeed, downSpeed, desiredHeight) = 10.
| # | Day | Night |
|---|---|---|
| 1 | 100 | 90 |
| 2 | 190 | 180 |
| 3 | 280 | 270 |
| 4 | 370 | 360 |
| 5 | 460 | 450 |
| 6 | 550 | 540 |
| 7 | 640 | 630 |
| 8 | 730 | 720 |
| 9 | 820 | 810 |
| 10 | 910 | 900 |
The plant first reaches a height of 910 on day 10.
Input/Output
-
[execution time limit]
4 seconds (py3) -
[input] integer upSpeed
A positive integer representing the daily growth of the plant.
Guaranteed constraints:3 ≤ upSpeed ≤ 100. -
[input] integer downSpeed
A positive integer representing the nightly decline of the plant.
Guaranteed constraints:2 ≤ downSpeed < upSpeed. -
[input] integer desiredHeight
A positive integer representing the goal height.
Guaranteed constraints:4 ≤ desiredHeight ≤ 1000. -
[output] integer
The number of days that it will take for the plant to reach / passdesiredHeight.
My Solution
import math
def growingPlant(upSpeed, downSpeed, desiredHeight):
if desiredHeight < upSpeed:
return 1
return math.ceil((desiredHeight - upSpeed) / (upSpeed - downSpeed) + 1)