Как решать задачи про автоматы с кофе: типовые схемы и примеры
Чтобы решить задачу про кофейный автомат, нужно смоделировать его работу как конечный автомат: определить состояния (например, «копилка пуста», «накоплено 5 рублей»), возможные переходы между ними при внесении монет и целевое состояние, при котором выдается кофе. Ключ к решению — построение графа состояний или таблицы переходов, где четко видно, какая сумма накоплена и сколько сдачи требуется вернуть.
В заданиях ЕГЭ по информатике (часто это задача №6 или вариации в части с развернутым ответом) «кофейный автомат» — это классическая модель исполнительника. Обычно автомат принимает монеты определенного номинала (1, 2, 5, 10 рублей), имеет ограниченную память (или не имеет её вовсе, работая только с текущей суммой) и выдает сдачу, если она есть в резерве.
Основная концепция: Конечный автомат
Кофейный автомат в контексте учебных задач работает по принципу детерминированного конечного автомата (ДКА).
Его работа описывается тремя компонентами:
- Алфавит входов: Набор монет, которые можно опустить (например,
{1, 2, 5}). - Множество состояний: Текущая накопленная сумма или статус устройства (например,
S0— 0 руб.,S1— 1 руб.,S2— 2 руб. и т.д.). - Функция переходов: Правило, по которому автомат меняет состояние при получении новой монеты.
Главное правило: Автомат переходит в новое состояние только после полного приема монеты. Если цена кофе 15 рублей, а вы внесли 10, автомат находится в состоянии «накоплено 10». Он не выдаст кофе и не вернет сдачу, пока сумма не станет ≥ 15 (при условии наличия сдачи).
Типовая схема решения
Для успешного решения следуйте этому алгоритму:
-
Выделите параметры:
- Цена кофе ($C$).
- Номиналы принимаемых монет.
- Наличие/отсутствие механизма сдачи (и начальный запас монет для сдачи, если он указан).
- Условие сброса (обнуляется ли копилка после покупки).
-
Постройте граф состояний:
- Нарисуйте кружки (состояния), подписав в них накопленную сумму.
- Начальное состояние всегда 0.
- Проведите стрелки (переходы) от одного состояния к другому, подписав над стрелкой номинал монеты.
-
Определите целевые состояния:
- Это состояния, где накопленная сумма $\ge C$.
- Из этих состояний должны выходить переходы «выдача кофе» и «возврат сдачи».
-
Смоделируйте процесс:
- Пройдите по графу согласно условию задачи (последовательности внесенных монет).
- Зафиксируйте конечное состояние или количество выданного кофе.
Пример 1: Автомат без сдачи (накопительный)
Условие: Автомат продает кофе за 10 рублей. Принимает монеты 1, 2 и 5 рублей. Сдачу не выдает. Если внесено больше 10 рублей, излишек сгорает (или сохраняется для следующей покупки — уточняется в условии, допустим, сгорает для простоты модели, но чаще в ЕГЭ излишек остается в копилке до следующей покупки, если не сказано иное. Рассмотрим вариант: излишек теряется, так как автомат «тупой»).
Примечание: В реальных задачах ЕГЭ чаще встречается модель, где автомат просто накапливает сумму. Если сумма >= 10, он выдает кофе и сбрасывает счетчик в 0, игнорируя остаток, либо остаток переносится. Разберем самый частый кейс: остаток переносится.
Задача: Пользователь внес монеты: 5, 2, 2, 1, 5. Сколько чашек кофе он получит?
Решение через таблицу состояний:
| Шаг | Внесено | Накоплено было | Стало накоплено | Действие автомата | Остаток в копилке |
|---|---|---|---|---|---|
| 1 | 5 | 0 | 5 | Нет | 5 |
| 2 | 2 | 5 | 7 | Нет | 7 |
| 3 | 2 | 7 | 9 | Нет | 9 |
| 4 | 1 | 9 | 10 | Выдать кофе | 0 (сброс) |
| 5 | 5 | 0 | 5 | Нет | 5 |
Ответ: 1 чашка кофе.
Если бы в условии было сказано, что излишек сгорает, то при внесении последней монеты 5 (шаг 5) ничего бы не изменилось, так как 5 < 10. Но если бы после шага 4 остаток был бы, например, 2 рубля (цена 8 руб), то они бы перенеслись. Всегда внимательно читайте условие про «сброс» счетчика.
Пример 2: Автомат со сдачей (более сложный)
Условие: Цена кофе — 15 рублей. Автомат принимает монеты: 1, 5, 10. Автомат выдает сдачу монетами 1 и 5, если они есть в резерве. Начальный резерв сдачи: пять монет по 1 рублю и две монеты по 5 рублей. Если точной сдачи нет, автомат не принимает последнюю монету и возвращает её сразу, состояние копилки не меняется.
Задача: Последовательность монет: 10, 5, 1, 1, 1. Что произойдет?
Решение:
-
Внесли 10.
- Накоплено: 10.
- До цели: 5 руб.
- Резерв сдачи: неизменен.
-
Внесли 5.
- Накоплено: 10 + 5 = 15.
- Сумма равна цене.
- Действие: Выдать кофе. Сбросить копилку в 0. Сдача не нужна.
- Резерв сдачи: тот же (5x1р, 2x5р).
-
Внесли 1.
- Накоплено: 1.
-
Внесли 1.
- Накоплено: 2.
-
Внесли 1.
- Накоплено: 3.
Итог: Получена 1 чашка кофе, в копилке осталось 3 рубля. Сдача не потребовалась.
Усложним задачу: Последовательность: 10, 10.
- Внесли 10. Накоплено 10.
- Внесли 10. Накоплено 20.
- Излишек: $20 - 15 = 5$ руб.
- Нужно выдать сдачу 5 руб.
- Проверяем резерв: есть ли монета 5р или пять монет по 1р?
- В резерве есть две монеты по 5р.
- Действие: Выдать кофе, выдать одну монету 5р в качестве сдачи.
- Копилка сбрасывается в 0.
- Новый резерв: пять монет по 1р, одна монета 5р.
Частые ошибки при решении
-
Игнорирование ограничения по сдаче. Студенты часто считают, что автомат всегда может дать сдачу. Если в условии сказано «сдача только имеющимися монетами», нужно вести учет резерва.
-
Неверный порядок операций. Сначала проверяется достаточность суммы, затем выдается кофе, потом рассчитывается и выдается сдача, и только в конце сбрасывается (или корректируется) состояние копилки.
-
Путаница с «зависанием». В некоторых задачах, если сдачи нет, автомат блокируется или возвращает всю накопленную сумму. Внимательно читайте поведение при ошибке выдачи сдачи.
-
Арифметические ошибки в графе. При большом количестве мелких монет легко ошибиться в сумме. Используйте табличный метод вместо устного счета.
FAQ
В чем разница между автоматом с памятью и без? Автомат без памяти (комбинационный) реагирует только на текущую монету (встречается редко). Автомат с памятью (последовательностный) учитывает всю историю внесенных средств, храня текущую сумму. В ЕГЭ почти всегда речь о втором типе.
Что делать, если в задаче не указано, что происходит с излишком? По стандарту школьных задач, если не сказано «излишек сгорает», считается, что он остается в копилке для следующей покупки. Однако, если автомат выдал кофе, копилка обычно обнуляется, а излишек возвращается как сдача.
Как быстро построить граф для цены 25 рублей? Не обязательно рисовать все 25 состояний. Рисуйте только те суммы, которые достижимы имеющимися монетами, и重点关注 (ключевые) точки: 0, промежуточные суммы, кратные номиналам, и целевую сумму.
Может ли автомат принимать несколько монет одновременно? В моделях ЕГЭ входной поток всегда последовательный. Одновременное внесение не рассматривается.
Что значит «автомат зациклился»? Это ситуация, когда из-за ошибки в логике (например, невозможности выдать сдачу и невозможности вернуть монеты) автомат переходит в состояние, из которого нет выхода. В задачах это обычно исключается корректными условиями.
Заключение
Решение задач на кофейные автоматы сводится к дисциплинированному отслеживанию состояния системы. Не пытайтесь держать все цифры в уме. Нарисуйте простую схему: «Было -> Внесли -> Стало -> Действие». Такой визуальный подход исключает арифметические ошибки и помогает правильно учесть логику выдачи сдачи. Помните, что автомат — это формальный исполнитель, который делает только то, что жестко запрограммировано в условиях задачи.