Задание 19 ЕГЭ по информатике 2027: теория игр: выигрыш первым ходом
- Раздел
- Теоретические основы информатики
- Максимальный балл
- 1 балл
- Уровень
- базовый
- Что проверяет
- Умение анализировать алгоритм логической игры
- Что нужно сделать
- Проанализировать игру с одной или двумя кучами камней и найти значение, при котором второй игрок может выиграть своим первым ходом.
- Как записать ответ
- только число: целое, без пробелов и единиц измерения
- Время
- Около 5 минут по обобщённому плану ФИПИ
- Элемент кодификатора
- 2.15
- Компьютер
- Специальное ПО по плану ФИПИ не нужно: задание решают рассуждением, программа — для проверки
- Файл к заданию
- Нет — все данные в условии
- В 2026 году
- Тоже задание 19
Задание 19 ЕГЭ по информатике 2027 года проверяет, по формулировке ФИПИ, «умение анализировать алгоритм логической игры». Это первая из трёх задач об одной игре с камнями: в 19 ищут минимальное S, при котором партия может закончиться уже на первом ходу Вани, в 20 — значения S с выигрышной стратегией Пети, в 21 — стратегию Вани. Файла к заданию нет, специальное ПО не предусмотрено: данные есть в условии, ответ — одно целое число.
Уровень базовый, по обобщённому плану ФИПИ на задание отводится 5 минут, за верный ответ — 1 балл. В 2027 году тема и уровень не менялись, изменилось только рекомендованное время: в 2026 году это было 6 минут. В 2026 году с заданием справились 59,3 % участников, в 2025 году — 66,2 %.
Ниже — три типа задачи с разбором и программой на Python, разбор демоверсии и типичные ошибки; тренажёр с заданиями банка — сразу под этим текстом.
Тренажёр задания 19
Десять заданий номера 19 из банка тренажёра — с файлами, как на станции КЕГЭ. Решайте в песочнице Python прямо на странице или у себя; ответ проверяется по ключу, после проверки — верный ответ, разбор и решение на Python, а при ошибке — разбор от ИИ. Кнопка «Ещё 5 таких» у типа задания ниже даёт задания одного типа.
Задание 19 вместе с остальными — в вариантах целиком.
Типы задания 19 с решением
Две кучи: добавить камни или увеличить кучу
Два игрока, Петя и Ваня, играют с двумя кучами камней: ходят по очереди, первый ход делает Петя. За ход можно добавить в одну из куч (по выбору) 3 камня или увеличить одну из куч (по выбору) в 2 раза: из (22, 14) получаются (25, 14), (22, 17), (44, 14) и (22, 28).
Игра заканчивается, когда суммарно камней становится не менее 115. В первой куче 19 камней, во второй — S, 1 ≤ S ≤ 95. Известно, что Ваня выиграл своим первым ходом. Укажите минимальное значение S. Для этого примера ответ — 24.
1. «Ваня выиграл своим первым ходом»: Петя ходит и игру не заканчивает, а Ваня доводит сумму до 115. 2. Из (a, b) получаются (a + 3, b), (a, b + 3), (2a, b) и (a, 2b); наибольшая сумма — a + b + max(a, b). 3. Пропускаем S, где Петя выигрывает сам, и берём первое, где хотя бы один ход Пети даёт Ване победу одним ходом.
На примере: S = 24 подходит — Петя идёт в (19, 48), сумма 67, а Ваня удваивает вторую кучу до 96 и получает 115. При S = 23 лучший ответ Вани — только 111, значит 24 минимально.
LIMIT = 115 # сумма, при которой игра заканчивается
START = 19 # камней в первой куче
def moves(a, b):
"""Все позиции, которые можно получить из (a, b) одним ходом."""
return ((a + 3, b), (a, b + 3), (a * 2, b), (a, b * 2))
def wins_now(a, b):
"""Заканчивает ли игрок, чей сейчас ход, игру этим ходом."""
return any(x + y >= LIMIT for x, y in moves(a, b))
for s in range(1, 96):
if wins_now(START, s):
continue # Петя выигрывает своим первым ходом — случай не тот
# есть ход Пети, после которого Ваня сразу доходит до 115
if any(wins_now(a, b) for a, b in moves(START, s)):
print(s)
break
Ответ: 24
Одна куча: добавить камни или увеличить кучу
Два игрока, Петя и Ваня, играют с одной кучей камней, первый ход делает Петя. За ход можно добавить 3 камня или увеличить кучу в 3 раза: из 13 получаются 16 и 39.
Игра заканчивается при 104 камнях и больше. В куче S камней, 1 ≤ S ≤ 103. Известно, что Ваня выиграл своим первым ходом. Укажите минимальное значение S. Для этого примера ответ — 12.
1. Ходов два: n + 3 и 3n; победа первым ходом — когда после хода камней стало не менее 104. 2. Не подходит S, где Петя заканчивает игру сам: 3S ≥ 104 или S + 3 ≥ 104. 3. Для остальных проверяем, есть ли у Пети ход, после которого Ваня сразу доходит до 104.
На примере: при S = 12 Петя идёт в 36, это меньше 104, а Ваня утраивает кучу — 108, победа. При S = 11 лучший ответ Вани — 99, до порога не хватает.
LIMIT = 104 # игра заканчивается при 104 камнях и больше
PLUS = 3
MULT = 3
def moves(n):
"""Куда можно попасть из кучи n за один ход."""
return (n + PLUS, n * MULT)
def wins_now(n):
"""Заканчивает ли игрок, чей сейчас ход, игру этим ходом."""
return any(q >= LIMIT for q in moves(n))
for s in range(1, LIMIT):
if wins_now(s):
continue # Петя выигрывает своим первым ходом
# найдётся ход Пети, после которого Ваня доходит до 104 сразу
if any(wins_now(q) for q in moves(s)):
print(s)
break
Ответ: 12
Одна куча: убрать камни или уменьшить кучу
Два игрока играют с одной кучей камней, первый ход делает Петя. За ход можно убрать 4 камня, убрать 6 камней или уменьшить кучу в 3 раза (результат деления округляется до меньшего): из 112 получаются 108, 106 и 37.
Игра заканчивается, когда камней становится не более 48. В куче S камней, S ≥ 49. Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня выигрывает своим первым ходом. Для этого примера ответ — 147.
1. Ходов у Пети три: n − 4, n − 6 и n // 3; победа — когда результат не больше 48. 2. Значения, где Петя выигрывает сам, пропускаем: при 146 его ход «уменьшить в 3 раза» даёт ровно 48 и заканчивает игру. 3. Берём первое S, где победа одним ходом есть после каждого хода Пети, — в коде это all(...) по трём ходам.
На примере: при S = 147 ходы Пети дают 143, 141 и 49 — игру он не закончил, а Ваня из 143 и 141 получает 47, из 49 — 45. Минимальное S равно 147.
LIMIT = 48 # игра заканчивается, когда камней не больше 48
def moves(n):
"""Куда можно попасть из кучи n за один ход."""
return (n - 4, n - 6, n // 3) # деление округляется до меньшего
def wins_now(n):
"""Заканчивает ли игрок, чей сейчас ход, игру этим ходом."""
return any(q <= LIMIT for q in moves(n))
for s in range(49, 400):
if wins_now(s):
continue # Петя заканчивает игру своим первым ходом
# Ваня должен побеждать после любого хода Пети
if all(wins_now(q) for q in moves(s)):
print(s)
break
Ответ: 147
Как выполнять задание
- Выпишите правила игры: сколько куч, какие ходы разрешены, при какой сумме игра заканчивается и кто ходит первым.
- Определите событие. «Ваня выиграл своим первым ходом» — достаточно одного хода Пети, в коде это any(...). «При любом ходе Пети» — проверяют все ходы, это all(...).
- Опишите ходы функцией: она возвращает позиции после одного хода, а отдельная проверка говорит, заканчивает ли ход игру.
- Перебирайте S по возрастанию от нижней границы условия и остановитесь на первом подходящем — оно и минимально.
- Проверьте ответ в обе стороны: при найденном S ситуация возможна, при S − 1 — нет.
- В поле ответа внесите одно целое число без пробелов и единиц измерения.
Что нужно знать
- Выигрышная и проигрышная позиция. Позиция выигрышная, если из неё есть ход в проигрышную, и проигрышная, если все ходы ведут в выигрышные; считать удобно с конца, от законченных партий.
- Победа первым ходом. Петя побеждает сразу, если ход заканчивает игру из начальной позиции. У Вани такой ход должен найтись после хода Пети; при словах «такая ситуация возможна» хватает одного удачного хода Пети.
- Порог игры. «Не менее 115» — это 115 и больше, «не более 48» — 48 и меньше; победа ровно на пороге считается.
- Сильный ход. Удвоение растёт быстрее прибавления, поэтому выгодно удваивать большую кучу: наибольшая сумма после хода — a + b + max(a, b).
Демонстрационный вариант с файлами и песочницей Python — в демоверсии КЕГЭ 2027 на сайте.
Как оценивается
Проверка автоматическая, по ключу: ответ должен быть записан в форме из условия и полностью совпасть с эталоном. Код и черновики не проверяют — значение имеет только ответ. За верный ответ — 1 балл, частичного балла нет.
Критерии всех заданий экзамена — на странице критериев ЕГЭ.
Разбор задания демоверсии 2027
В демоверсии 2027 года играют с двумя кучами: за ход можно добавить 4 камня в одну из куч или удвоить одну из них, игра заканчивается при сумме не менее 133, в первой куче 17 камней, 1 ≤ S ≤ 115, спрошено минимальное S, при котором Ваня выиграл своим первым ходом.
Проверим границу снизу. При S = 28 лучший ответ Вани ни после одного хода Пети не дотягивает до 133: из (21, 28) выходит 77, из (17, 32) — 81, из (34, 28) — 96, из (17, 56) — 129. При S = 29 Петя может попасть в (17, 58): сумма 75, игру он не закончил, а Ваня удваивает вторую кучу — 116 камней, сумма 133, победа первым ходом.
Перебор с правилами демоверсии — прибавление 4 камней, удвоение одной из куч и порог 133 — печатает 29: это ключ ФИПИ демонстрационного варианта.
Типичные ошибки
Спутаны «ситуация возможна» и «при любом ходе Пети»
В демоверсии хватает одного хода Пети, после которого Ваня заканчивает игру: в коде это any(...). Формулировка «при любом ходе Пети» требует all(...). С неверной связкой программа печатает число, но не то.
Удваивают меньшую кучу
Самый сильный ход из (a, b) — удвоить большую кучу: сумма становится a + b + max(a, b). Если проверять только удвоение меньшей кучи, выигрышная позиция не найдётся и ответ окажется завышен.
Забыли, что Петя может выиграть сам
Случай «Ваня выиграл своим первым ходом» годится лишь там, где Петя игру не заканчивает. Перед переходом к следующему S проверяют, что ни один ход Пети не доводит сумму до порога.
Округление при делении не в ту сторону
При уменьшении кучи деление округляется до меньшего: 146 // 3 = 48, а не 49. При обычном делении получается дробное число, и условие «не более 48» не срабатывает на пороге.
Вопросы и ответы
Как решать задание 19 ЕГЭ по информатике?
Перебором S по возрастанию: для каждого значения проверяют ходы Пети, а после каждого хода — может ли Ваня закончить игру одним ходом. Первое подходящее S и есть ответ. В двух кучах наибольшая сумма после хода — a + b + max(a, b).
Сколько баллов даёт задание 19 и сколько на него времени?
1 балл, частичного балла нет. По обобщённому плану ФИПИ на задание отводится 5 минут, уровень базовый.
Нужен ли шаблон кода на Python для задания 19?
Хватает короткого шаблона: функция ходов, проверка «заканчивает ли ход игру» и цикл по S с остановкой на первом подходящем. Сторонние библиотеки не нужны; среды программирования из перечня регион доводит до участников не позднее 1 марта.
Что изменилось в задании 19 в 2027 году?
Тема и уровень те же: «Умение анализировать алгоритм логической игры», базовый уровень, 1 балл. В обобщённом плане 2027 года указано 5 минут против 6 минут в 2026 году, других изменений по заданию нет.
Другие задания раздела «Теоретические основы информатики»
- Задание 1схема дорог и таблица расстояний · до 1 балла
- Задание 2таблицы истинности · до 1 балла
- Задание 4условие Фано и кодирование · до 1 балла
- Задание 7объём изображения и звука · до 1 балла
- Задание 8слова и комбинаторика · до 1 балла
- Задание 11объём сообщения и пароли · до 1 балла
- Задание 14системы счисления · до 1 балла
- Задание 15логические выражения · до 1 балла
- Задание 20теория игр: выигрыш вторым ходом · до 1 балла
- Задание 21теория игр: дерево игры · до 1 балла
- Задание 23кратчайший путь в графе · до 1 балла
По демоверсии, спецификации и кодификатору ФИПИ 2027
Обновлено: