Сдача в школьном буфете

тема: Арифметика и формулы (O(1)) · уровень: базовый

Условие

В школьном буфете сдачу выдают монетами номиналов 100, 50, 10, 5, 2 и 1 (в условных единицах). Буфетчица всегда действует одинаково: сначала кладёт как можно больше монет по 100, потом по 50, потом по 10, затем 5, 2 и 1.

Тебе дали сумму сдачи. Определи, сколько монет каждого номинала окажется в выдаче.

Важно: сумма может быть большой (как на олимпиадах), больше 32-битного типа. В Python это не мешает, но в других языках нужен 64-битный тип.

Формат ввода

Одно целое число A — сумма сдачи.

Формат вывода

Выведи 6 целых чисел через пробел: количество монет номиналов 100 50 10 5 2 1 в этом порядке.

Ограничения

0 ≤ A ≤ 1_000_000_000.

Пример

Ввод:

289

Вывод:

2 1 3 1 2 0

Как решать — идея подхода

Приём: Жадный размен + целочисленное деление

Ключевое наблюдение: буфетчица действует «жадно» — для каждого номинала берёт максимально возможное число монет, а дальше работает только с оставшейся суммой. Нам не нужно искать варианты: порядок номиналов задан, значит результат однозначен.

Почему работает: количество монет номинала d — это просто целая часть от A / d. После этого из суммы нужно убрать выданное, то есть перейти к остатку A % d. Это ровно то, что делает описанный алгоритм.

План решения:

Мини-сниппет для одного шага: cnt = A // d; A = A % d (или cnt, A = divmod(A, d)).

Сложность: O(6), то есть фактически O(1) по времени и O(1) по памяти.

Частая ошибка: перепутать порядок номиналов или забыть обновлять A на остаток — тогда дальше монеты считаются от исходной суммы и ответ становится неверным.

Разберись руками

Тебе нужно выдать сдачу 289 монетами 100, 50, 10, 5, 2, 1. Буфетчица всегда берёт максимум монет самого большого номинала, потом переходит к следующему. Давай руками разложим 289 по этим монетам.

Идея: Идёшь по номиналам от большего к меньшему: на каждом номинале берёшь максимум монет, которые не превышают текущий остаток, и заменяешь сумму на новый остаток. Повторяешь, пока не дойдёшь до 1.

Решить задачу с автопроверкой на Python →

Куда дальше