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

Банковские проценты

Храним вклад в копейках и моделируем ежегодное начисление.

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

Разберитесь, как повторять действие, пока выполняется условие, и вовремя остановить цикл.

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

Цикл while продолжается, пока условие истинно. Продумайте, какое значение меняется на каждом шаге и почему цикл когда-нибудь завершится. Проверяйте как обычный ввод, так и случай, когда тело цикла выполняется ноль раз.

Ключевая идея · Целые копейки

После каждого года отбрасываем только дробь копейки. При x >= y ответ равен нулю.

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

  • Округлять до целых рублей нельзя.
  • Вещественные вычисления могут ошибиться на границе копейки.

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

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

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

Рекомендуемое решение: Целые копейки

После каждого года отбрасываем только дробь копейки. При x >= y ответ равен нулю.

x = int(input())
p = int(input())
y = int(input())
money = x * 100
years = 0
while money < y * 100:
    money = money * (100 + p) // 100
    years += 1
print(years)

Время: O(t), t — число лет. Память: O(1) целочисленных переменных.

Другой способ: Раздельный учёт рублей и копеек

Вычисляем целую прибавку в копейках, затем переносим каждые 100 копеек в рубли.

rubles = int(input())
p = int(input())
target = int(input())
kopecks = 0
years = 0
while rubles < target:
    interest = (rubles * 100 + kopecks) * p // 100
    rubles += interest // 100
    kopecks += interest % 100
    rubles += kopecks // 100
    kopecks %= 100
    years += 1
print(years)

Время: O(t). Память: O(1) целочисленных переменных.