Мини-урок · перед практикой

Сложные проценты

Каждый год начисляем проценты в целых копейках.

Как к ней подойти

Увидите, как целочисленные операции и вычисления с дробями помогают обойтись без лишних шагов.

Коротко о теме

Операции // и % помогают разделить число на целую часть и остаток. Для дробных вычислений следите за точностью и порядком действий: одно и то же число может требовать разного способа обработки.

Ключевая идея · Один денежный счётчик

Ежегодное целочисленное деление отбрасывает дробную часть копейки именно тогда, когда требует условие.

Проверьте перед запуском

  • Степенная формула без ежегодного округления даёт другой результат.

Сравните свой подход

Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.

Ваше принятое решение

Рекомендуемое решение: Один денежный счётчик

Ежегодное целочисленное деление отбрасывает дробную часть копейки именно тогда, когда требует условие.

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) числовых переменных.