Сложные проценты
Вы решили задачу. Теперь можно сравнить подходы.
Каждый год начисляем проценты в целых копейках.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Один денежный счётчик
Ежегодное целочисленное деление отбрасывает дробную часть копейки именно тогда, когда требует условие.
p = int(input())
x = int(input())
y = int(input())
k = int(input())
money = 100 * x + y
for _ in range(k):
money = money * (100 + p) // 100
print(money // 100, money % 100)
Время: O(k). Память: O(1) числовых переменных.
Другой способ: Прибавка и нормализация копеек
Прибавляем целые копейки процентов, после чего выделяем рубли из накопившихся копеек.
p = int(input())
rubles = int(input())
kopecks = int(input())
k = int(input())
for _ in range(k):
increment = (100 * rubles + kopecks) * p // 100
kopecks += increment
rubles += kopecks // 100
kopecks %= 100
print(rubles, kopecks)
Время: O(k). Память: O(1) числовых переменных.
На что обратить внимание
- Степенная формула без ежегодного округления даёт другой результат.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.