Задание 19 в ЕГЭ по информатике — это задача на разработку и описание алгоритма, обычно из области рекурсивных вычислений, поиска или перебора вариантов. Это одно из самых сложных заданий в ЕГЭ, которое проверяет не только знание программирования, но и умение логически мыслить и анализировать.
📌 Что представляет собой задание 19?
Задание 19 формулируется так, что нужно:
Придумать алгоритм, который выполняет определённую задачу.
Иногда — составить функцию (чаще рекурсивную), которая считает количество способов преобразования, например, из числа A в число B, используя допустимые операции.
В других случаях — описать стратегию игры, выигрышную или проигрышную позицию, на основании правил.
Пример формулировки (упрощённо):
Сколько существует программ (последовательностей команд), которые преобразуют число A в число B, используя только операции +1 и *2? При этом промежуточные значения не должны превышать C.
Или:
Петя и Ваня играют в игру. На доске лежит куча камней. За ход игрок может добавить 1, 2 или удвоить. Кто выигрывает при идеальной игре?
🔑 Какие бывают типы задач?
Задание 19 можно классифицировать на три основные группы:
1. Рекурсивные преобразования (количество путей)
Нужно посчитать, сколькими способами можно превратить одно число в другое с помощью определённых операций.
Используются рекурсия или динамическое программирование.
🧠 Основная идея:
Если ты можешь прийти в точку B из A через X операций, то ты можешь подумать: какие предыдущие шаги могли привести в B?
📌 Пример:
🟡 Подзадачи:
Иногда накладываются ограничения: запрещённые числа, промежуточные условия.
Нужно фильтровать пути (например, только такие, которые проходят через определённую точку).
2. Игровые задачи (выигрышные/проигрышные позиции)
Есть игра с чёткими правилами.
Нужно определить, кто выигрывает при идеальной игре.
Применяются деревья ходов, мемоизация, анализ позиций (выигрышная/проигрышная).
📌 Ключевые понятия:
Выигрышная позиция — игрок может совершить ход, после которого противник окажется в проигрышной позиции.
Проигрышная позиция — любой ход ведёт в выигрышную позицию соперника.
🧠 Суть:
Рассматриваем все возможные ходы и рекурсивно определяем для каждой позиции, можно ли из неё выиграть.
📌 Пример:
Обозначения:
W
: выигрышная позиция (21 или больше).P1
: первый игрок выигрывает первым ходом.V1
: второй выигрывает, если первый ошибся.P2
,V2
: стратегии второго хода.
3. Поиск оптимальных стратегий/решений
Нужно найти, например:
минимальное/максимальное число ходов,
количество программ,
оптимальные параметры игры.
Решается через:
Рекурсивный перебор,
Хранение состояний,
Динамику (мемоизация).
🛠 Как решать задание 19 пошагово?
Шаг 1: Внимательно прочитай условие
Определи:
Что задано (начальное и конечное состояние),
Что можно делать (операции),
Что нужно найти (кол-во путей, выигрыш, стратегия и т.п.),
Есть ли ограничения (например, промежуточные условия, запрещённые значения).
Шаг 2: Типизируй задачу
Это рекурсивное преобразование, игра, или оптимизация?
Шаг 3: Составь рекурсивную модель
Для задач с путями — функция
f(x, y)
(откуда-куда).Для игр — дерево возможных ходов и метки (выигрыш/проигрыш).
Шаг 4: Упрости модель
Попробуй решить руками на простом примере (например,
A = 2, B = 5
).Пойми структуру решения.
Шаг 5: Реализуй в коде (Python)
📋 Пример 1 — Сколько программ переводят 2 в 13 с помощью +1 и *2?
📋 Пример 2 — Игра: Из 5 до 30. Ход: +1, +2, *2. Кто выигрывает?
🧠 Полезные советы:
Используй мемоизацию (
@lru_cache
) для ускорения:
Рисуй дерево решений на бумаге.
Проверяй код на простых примерах (2–5 шагов).
Чётко расписывай базу рекурсии.
Запоминай типовые паттерны (операции, стратегии).
📚 Что почитать и где потренироваться?
Сайт Polyakov — очень много качественных задач
Учебники К. Полякова и И. Егоровой
YouTube: Каналы «Фоксфорд», «Школково», «Умскул»
Если хочешь — могу разобрать конкретную задачу 19 из демо-версии, реального варианта или тренировочной. Напиши её сюда — разложу по полочкам.