Задача:Бутылки
(Время: 1 сек. Память: 16 Мб Сложность: 48%)
Группа программистов собралась в понедельник и на все свои деньги купила «Sprite» в бутылках емкостью по 0.25 л., не забыв взять сдачу.
Во вторник они сдали пустую посуду, добавили оставшуюся сдачу и вновь купили столько таких же бутылок «Sprite», сколько могли.
Так они действовали до пятницы. В пятницу, сдав посуду и добавив сдачу с четверга, они смогли купить только одну бутылку напитка. При этом денег у них уже не осталось.
Требуется написать программу, определяющую минимальную сумму, которой располагали программисты в понедельник.
Входные данные
Входной файл INPUT.TXT состоит из единственной строки, содержащей два целых числа F (стоимость одной бутылки «Sprite») и P (стоимость одной пустой бутылки из под «Sprite»), разделенных пробелом.
Ограничения: 1 ≤ P < F ≤ 109, начальная сумма не превосходит 2×109.
Выходные данные
В единственную строку выходного файла OUTPUT.TXT нужно вывести одно целое число – минимальную сумму, которой располагали программисты в понедельник.
Пример:
7 3
Пт.7
Чт.11
Ср.19
Вт.39
Пн. 83
<br>
F,P = map(int,input().split()) #7 3<br><br>
def f(Q, deep):<br>
if deep == 5:<br>
return Q<br>
for x in range(Q, 100*Q):<br>
if x == Q+ (F-P)*(x//F):<br>
break<br>
return f(x,deep+1)<br>
print(f(F,1)) <br>
12 тест не проходит по времени (На Си тоже самое)
Как ускорить время выполнения скрипта.
Предыдущее кол-во денег можно посчитать по формуле x - (F-P)(x div F) = Q , где x - минимальное число, которое подходит для выполнения равенства. Q- кол-во денег в этот день.
В пятницу оно равно F.