Ваша проблема заключается в том, как округляются суммы, когда происходит отбрасывание дробной части копеек. Функция int() может не всегда правильно отбрасывать дробные части при увеличении суммы вклада, особенно если точность операций с плавающей запятой влияет на результат.
Для корректного решения задачи, вам нужно каждый год прибавлять проценты к вкладу и после этого отбрасывать дробную часть, не используя плавающую запятую в промежуточных вычислениях. Это можно сделать следующим образом:
- Использовать целые числа для хранения суммы вклада, процента и результата.
- Для прибавления процентов нужно использовать умножение, а затем отбрасывать дробную часть путем целочисленного деления.
Вот исправленный код:
x = int(input()) # начальная сумма
p = int(input()) # проценты
y = int(input()) # целевая сумма
d = 0 # счетчик лет
while x < y:
x = x + (x * p) // 100 # прибавляем проценты и отбрасываем дробную часть
d += 1
print(d)
Kabachok19Мудрец (10090)
2 месяца назад
Все равно решается только 4 из 6 тестов, один неправильный, а другой вообще говорить что время выполнения программы превысило 1 секунду, поэтому незачет
x=int(input())
p=int(input())
y=int(input())
d=0
p=p/100+1
while x<y:
x=x*p
d+=1
print(d)
Из 6 тестов на сайте он проходит 5. Я знаю, что по условию надо отсекать дробную часть, но когда я это делаю через int(), у меня решается 4 из 6 тестов, что даже хуже чем без него.