Как решать задачи про автоматы с кофе: типовые схемы и примеры

Иван Корнев·19.05.2026·6 мин

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

В заданиях ЕГЭ по информатике (часто это задача №6 или вариации в части с развернутым ответом) «кофейный автомат» — это классическая модель исполнительника. Обычно автомат принимает монеты определенного номинала (1, 2, 5, 10 рублей), имеет ограниченную память (или не имеет её вовсе, работая только с текущей суммой) и выдает сдачу, если она есть в резерве.

Основная концепция: Конечный автомат

Кофейный автомат в контексте учебных задач работает по принципу детерминированного конечного автомата (ДКА).

Его работа описывается тремя компонентами:

  1. Алфавит входов: Набор монет, которые можно опустить (например, {1, 2, 5}).
  2. Множество состояний: Текущая накопленная сумма или статус устройства (например, S0 — 0 руб., S1 — 1 руб., S2 — 2 руб. и т.д.).
  3. Функция переходов: Правило, по которому автомат меняет состояние при получении новой монеты.

Главное правило: Автомат переходит в новое состояние только после полного приема монеты. Если цена кофе 15 рублей, а вы внесли 10, автомат находится в состоянии «накоплено 10». Он не выдаст кофе и не вернет сдачу, пока сумма не станет ≥ 15 (при условии наличия сдачи).

Типовая схема решения

Для успешного решения следуйте этому алгоритму:

  1. Выделите параметры:

    • Цена кофе ($C$).
    • Номиналы принимаемых монет.
    • Наличие/отсутствие механизма сдачи (и начальный запас монет для сдачи, если он указан).
    • Условие сброса (обнуляется ли копилка после покупки).
  2. Постройте граф состояний:

    • Нарисуйте кружки (состояния), подписав в них накопленную сумму.
    • Начальное состояние всегда 0.
    • Проведите стрелки (переходы) от одного состояния к другому, подписав над стрелкой номинал монеты.
  3. Определите целевые состояния:

    • Это состояния, где накопленная сумма $\ge C$.
    • Из этих состояний должны выходить переходы «выдача кофе» и «возврат сдачи».
  4. Смоделируйте процесс:

    • Пройдите по графу согласно условию задачи (последовательности внесенных монет).
    • Зафиксируйте конечное состояние или количество выданного кофе.

Пример 1: Автомат без сдачи (накопительный)

Условие: Автомат продает кофе за 10 рублей. Принимает монеты 1, 2 и 5 рублей. Сдачу не выдает. Если внесено больше 10 рублей, излишек сгорает (или сохраняется для следующей покупки — уточняется в условии, допустим, сгорает для простоты модели, но чаще в ЕГЭ излишек остается в копилке до следующей покупки, если не сказано иное. Рассмотрим вариант: излишек теряется, так как автомат «тупой»).

Примечание: В реальных задачах ЕГЭ чаще встречается модель, где автомат просто накапливает сумму. Если сумма >= 10, он выдает кофе и сбрасывает счетчик в 0, игнорируя остаток, либо остаток переносится. Разберем самый частый кейс: остаток переносится.

Задача: Пользователь внес монеты: 5, 2, 2, 1, 5. Сколько чашек кофе он получит?

Решение через таблицу состояний:

ШагВнесеноНакоплено былоСтало накопленоДействие автоматаОстаток в копилке
1505Нет5
2257Нет7
3279Нет9
41910Выдать кофе0 (сброс)
5505Нет5

Ответ: 1 чашка кофе.

Если бы в условии было сказано, что излишек сгорает, то при внесении последней монеты 5 (шаг 5) ничего бы не изменилось, так как 5 < 10. Но если бы после шага 4 остаток был бы, например, 2 рубля (цена 8 руб), то они бы перенеслись. Всегда внимательно читайте условие про «сброс» счетчика.

Пример 2: Автомат со сдачей (более сложный)

Условие: Цена кофе — 15 рублей. Автомат принимает монеты: 1, 5, 10. Автомат выдает сдачу монетами 1 и 5, если они есть в резерве. Начальный резерв сдачи: пять монет по 1 рублю и две монеты по 5 рублей. Если точной сдачи нет, автомат не принимает последнюю монету и возвращает её сразу, состояние копилки не меняется.

Задача: Последовательность монет: 10, 5, 1, 1, 1. Что произойдет?

Решение:

  1. Внесли 10.

    • Накоплено: 10.
    • До цели: 5 руб.
    • Резерв сдачи: неизменен.
  2. Внесли 5.

    • Накоплено: 10 + 5 = 15.
    • Сумма равна цене.
    • Действие: Выдать кофе. Сбросить копилку в 0. Сдача не нужна.
    • Резерв сдачи: тот же (5x1р, 2x5р).
  3. Внесли 1.

    • Накоплено: 1.
  4. Внесли 1.

    • Накоплено: 2.
  5. Внесли 1.

    • Накоплено: 3.

Итог: Получена 1 чашка кофе, в копилке осталось 3 рубля. Сдача не потребовалась.

Усложним задачу: Последовательность: 10, 10.

  1. Внесли 10. Накоплено 10.
  2. Внесли 10. Накоплено 20.
    • Излишек: $20 - 15 = 5$ руб.
    • Нужно выдать сдачу 5 руб.
    • Проверяем резерв: есть ли монета 5р или пять монет по 1р?
    • В резерве есть две монеты по 5р.
    • Действие: Выдать кофе, выдать одну монету 5р в качестве сдачи.
    • Копилка сбрасывается в 0.
    • Новый резерв: пять монет по 1р, одна монета 5р.

Частые ошибки при решении

  1. Игнорирование ограничения по сдаче. Студенты часто считают, что автомат всегда может дать сдачу. Если в условии сказано «сдача только имеющимися монетами», нужно вести учет резерва.

  2. Неверный порядок операций. Сначала проверяется достаточность суммы, затем выдается кофе, потом рассчитывается и выдается сдача, и только в конце сбрасывается (или корректируется) состояние копилки.

  3. Путаница с «зависанием». В некоторых задачах, если сдачи нет, автомат блокируется или возвращает всю накопленную сумму. Внимательно читайте поведение при ошибке выдачи сдачи.

  4. Арифметические ошибки в графе. При большом количестве мелких монет легко ошибиться в сумме. Используйте табличный метод вместо устного счета.

FAQ

В чем разница между автоматом с памятью и без? Автомат без памяти (комбинационный) реагирует только на текущую монету (встречается редко). Автомат с памятью (последовательностный) учитывает всю историю внесенных средств, храня текущую сумму. В ЕГЭ почти всегда речь о втором типе.

Что делать, если в задаче не указано, что происходит с излишком? По стандарту школьных задач, если не сказано «излишек сгорает», считается, что он остается в копилке для следующей покупки. Однако, если автомат выдал кофе, копилка обычно обнуляется, а излишек возвращается как сдача.

Как быстро построить граф для цены 25 рублей? Не обязательно рисовать все 25 состояний. Рисуйте только те суммы, которые достижимы имеющимися монетами, и重点关注 (ключевые) точки: 0, промежуточные суммы, кратные номиналам, и целевую сумму.

Может ли автомат принимать несколько монет одновременно? В моделях ЕГЭ входной поток всегда последовательный. Одновременное внесение не рассматривается.

Что значит «автомат зациклился»? Это ситуация, когда из-за ошибки в логике (например, невозможности выдать сдачу и невозможности вернуть монеты) автомат переходит в состояние, из которого нет выхода. В задачах это обычно исключается корректными условиями.

Заключение

Решение задач на кофейные автоматы сводится к дисциплинированному отслеживанию состояния системы. Не пытайтесь держать все цифры в уме. Нарисуйте простую схему: «Было -> Внесли -> Стало -> Действие». Такой визуальный подход исключает арифметические ошибки и помогает правильно учесть логику выдачи сдачи. Помните, что автомат — это формальный исполнитель, который делает только то, что жестко запрограммировано в условиях задачи.