Phone Call
- first minute of a call costs
min1
cents, - each minute from the 2nd up to 10th (inclusive) costs
min2_10
cents - each minute after 10th costs
min11
cents.
You have s
cents on your account before the call. What is the duration of the longest call (in minutes rounded down to the nearest integer) you can have?
Example
For min1 = 3
, min2_10 = 1
, min11 = 2
, and s = 20
, the output should be
phone_call(min1, min2_10, min11, s) = 14
Here's why:
- the first minute costs
3
cents, which leaves you with20 - 3 = 17
cents; - the total cost of minutes
2
through10
is1 * 9 = 9
, so you can talk9
more minutes and still have17 - 9 = 8
cents; - each next minute costs
2
cents, which means that you can talk8 / 2 = 4
more minutes.
Thus, the longest call you can make is 1 + 9 + 4 = 14
minutes long.
Solution
py
def phone_call(min1, min2_10, min11, s):
mins = 0
cost = 0
while s > 0:
mins += 1 # add one minute for each loop
if mins == 1: # 1st minute
cost = min1
elif mins == 2: # 2nd to 10th minutes
cost = min2_10
elif mins >= 11: # 11th minute onwards
cost = min11
s -= cost
if s < 0:
mins -= 1
return mins
print(phone_call(10, 1, 2, 2))