6 мин чтения

Задания 19–21 ЕГЭ по информатике 2027 — игра с двумя кучами камней

Разбор заданий 19, 20 и 21 ЕГЭ по информатике 2027: две кучи, ходы +4 и ×2, конец при сумме 133. Вопросы демоверсии и ответы 29, 28 48 и 44; одна функция на Python для всех трёх номеров.

В 2027 году задания 19, 20 и 21 играются на двух кучах: за ход игрок добавляет 4 камня в одну из куч или удваивает одну из куч, а игра заканчивается, когда сумма камней достигает 133. В первой куче 17 камней, во второй S. В демо 2026 игра шла на одной куче. Вопросы: 19 — наименьшее S, при котором Ваня выиграл своим первым ходом (эта формулировка новая); 20 — два наименьших S, при которых Петя выигрывает вторым ходом; 21 — наименьшее S, при котором Ваня выигрывает первым или вторым ходом (как и в 2026). Ответы демо: 29, 28 48 и 44. Все три номера решает одна функция на Python; ниже — условие, объяснение каждого ответа, код и отличия от демо 2026.

Игры на одной и на двух кучах с вопросами «при любом ходе Пети» разобраны в статьях о задании 19, задании 20 и задании 21: понятия выигрышной и проигрышной позиции там те же.

Условие демоверсии 2027

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) 4 камня или увеличить количество камней в одной из куч в 2 раза. Например, из позиции (20, 30) за один ход можно получить (24, 30), (20, 34), (40, 30) или (20, 60).

Игра завершается, когда суммарное количество камней в кучах становится не менее 133. Победителем считается игрок, сделавший последний ход. В начальный момент в первой куче 17 камней, во второй — S камней, 1 ≤ S ≤ 115. Игрок имеет выигрышную стратегию, если может выиграть при любых ходах противника.

  • Задание 19. Известно, что Ваня выиграл своим первым ходом. Укажите минимальное значение S, при котором такая ситуация возможна. Ответ: 29.
  • Задание 20. Найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём Петя не может выиграть за один ход, но может выиграть своим вторым ходом независимо от игры Вани. Ответ: 28 48.
  • Задание 21. Найдите наименьшее S, при котором у Вани есть стратегия выиграть первым или вторым ходом при любой игре Пети, но нет стратегии гарантированно выиграть первым ходом. Ответ: 44.

Задание 19: наименьшее S, при котором Ваня выиграл первым ходом

Разберём условие. «Ваня выиграл своим первым ходом» — значит, Петя не выиграл сразу, а после какого-то хода Пети Ваня смог довести сумму до 133 одним ходом. Не «при любом ходе Пети», а «нашёлся такой ход». Это важно для кода: нужен any, а не all.

При S = 29 позиция (17, 29). Петя не может закончить игру: самый сильный ход — удвоить вторую кучу — даёт (17, 58), сумма 75. Но после этого хода Ваня удваивает 58 и получает (17, 116) — 133 камня, победа. Значит, при S = 29 ситуация возможна.

При S = 28 после удвоения (17, 56) Ваня удвоением получает 17 + 112 = 129 — мало; добавление четырёх даёт ещё меньше. Другие ходы Пети оставляют суммы ещё дальше от 133. Ни после одного хода Пети Ваня не выигрывает сразу. Поэтому наименьшее S — 29.

SЛучший ход ПетиОтвет ВаниСумма
28(17, 56)удвоить 56129 — не хватает
29(17, 58)удвоить 58133 — победа

Задание 20: два наименьших S с выигрышем Пети вторым ходом

Условие двойное: Петя не выигрывает первым ходом, но у него есть ход, после которого любой ответ Вани оставляет Пете выигрыш за один ход.

При S = 28 такой ход — удвоить вторую кучу: (17, 56). Ответы Вани и выигрыш Пети:

Ход Вани из (17, 56)ПозицияВыигрышный ход Пети
+4 в первую(21, 56)удвоить 56 → 21 + 112 = 133
+4 во вторую(17, 60)удвоить 60 → 17 + 120 = 137
удвоить первую(34, 56)удвоить 56 → 34 + 112 = 146
удвоить вторую(17, 112)+4 → 133

При S = 48 выигрышный первый ход Пети — удвоить первую кучу: (34, 48); дальше любой ответ Вани тоже закрывается одним ходом. Между 28 и 48 таких S нет: при S от 29 до 47 либо Петя выигрывает сразу, либо у Вани находится ответ, после которого Петя не закрывает игру. Ответ: 28 48, в порядке возрастания.

Задание 21: наименьшее S с выигрышем Вани первым или вторым ходом

Два условия: при любом ходе Пети Ваня выигрывает не позже своего второго хода, и при этом не при любом ходе Пети он выигрывает первым. При S = 44 из четырёх ходов Пети один — удвоить вторую кучу до (17, 88) — отдаёт Ване мгновенную победу удвоением 88. Остальные три — (21, 44), (17, 48), (34, 44) — мгновенной победы не дают, но после каждого из них у Вани есть ход, который закрывает игру его вторым ходом при любом ответе Пети. Для S от 40 до 43 это условие не выполняется. Ответ: 44.

Проверять такое руками долго, и именно здесь нужен код.

Одна функция на три номера

from functools import lru_cache

LIMIT = 133
FIRST = 17

def moves(p):
    a, b = p
    if a + b >= LIMIT:
        return []                      # игра окончена, ходов нет
    return [(a + 4, b), (a, b + 4), (a * 2, b), (a, b * 2)]

@lru_cache(None)
def win(p, k):
    """Ходящий из позиции p выигрывает не позже чем за k своих ходов."""
    if any(sum(m) >= LIMIT for m in moves(p)):
        return True
    if k == 1:
        return False
    return any(all(win(t, k - 1) for t in moves(m)) for m in moves(p))

good19 = []
good20 = []
good21 = []
for s in range(1, 116):
    p = (FIRST, s)
    if win(p, 1):                      # Петя выигрывает сразу — не подходит никому
        continue
    if any(win(t, 1) for t in moves(p)):
        good19.append(s)               # 19: нашёлся ход Пети, после которого Ваня выигрывает
    if win(p, 2):
        good20.append(s)               # 20: Петя выигрывает вторым ходом
    if all(win(t, 2) for t in moves(p)) and not all(win(t, 1) for t in moves(p)):
        good21.append(s)               # 21: Ваня выигрывает за два, но не гарантированно за один

print(good19[0])                       # 29
print(good20[0], good20[1])            # 28 48
print(good21[0])                       # 44

Позиция — кортеж из двух куч, moves возвращает четыре хода или пустой список для законченной игры. win(p, k) — есть ли у того, кто ходит из p, выигрыш не позже чем за k своих ходов: либо он заканчивает игру сразу, либо находит ход, после которого на любой ответ противника у него остаётся выигрыш за k − 1. Кеш обязателен: позиций немного, но без кеша рекурсия пересчитывает их тысячи раз.

Три вопроса — три условия в цикле. Для 19 — any по ходам Пети: Ване достаточно одного подходящего хода Пети. Для 20 — win(p, 2) при not win(p, 1). Для 21 — после каждого хода Пети Ваня выигрывает за два (all(win(t, 2))), но не после каждого — за один.

Чем 2027 отличается от демо 2026

Демоверсия 2026Демоверсия 2027
Кучиодна, конец — 30 камней или меньшедве, конец — сумма не меньше 133
Ходыубрать 3, убрать 5, уменьшить в 4 раза+4 к одной куче, ×2 одной кучи
19наименьшее S; Ваня выигрывает при любом ходе Пети (all)наименьшее S; известно, что Ваня выиграл (any)
20два наименьших Sдва наименьших S
21наименьшее Sнаименьшее S

Разница между any и all в задании 19 — не придирка: это разные множества S и разные ответы. Фраза «известно, что Ваня выиграл своим первым ходом» — any; «при любом ходе Пети Ваня выигрывает первым ходом» — all. Читай формулировку буквально.

Типичные ошибки

all вместо any в задании 19

Демо 2026 требовало выигрыша Вани при любом ходе Пети. В демо 2027 достаточно одного хода. С all ответ другой.

Наибольшее вместо наименьшего

В 2027 просят наименьшие S. Список подходящих S сортируется по возрастанию сам, если цикл идёт от 1; брать нужно первые элементы, а не последние.

Ходы только к одной куче

Четыре хода, а не два: прибавить к любой из куч, удвоить любую. Пропущенный ход меняет все три ответа.

Конец игры не по сумме

Игра заканчивается, когда сумма куч не меньше 133, а не когда одна из куч достигла порога. Сравнение — с a + b.

Петя выигрывает сразу

В 20 и 21 значения S, при которых Петя может выиграть первым ходом, не подходят по самим условиям — отсев win(p, 1) там часть условия. В 19 формулировка 2027 года прямо этого не запрещает: если Петя может выиграть сразу, но сходил неудачно, «Ваня выиграл своим первым ходом» тоже возможно. На наименьший ответ демо это не влияет — 29 в обоих прочтениях, — но в вариациях «наибольшее S» или «сколько значений S» ответы разойдутся. Читай условие буквально.

Подборка ошибок по всем номерам — в статье Типичные ошибки на ЕГЭ по информатике.

Тайминг на экзамене

ЭтапВремя
Прочитать три вопроса, выписать порог, кучи и ходы2 мин
Набрать moves и win по шаблону3 мин
Три цикла, запуск, три ответа3 мин
Проверить moves на примере из условия: (20, 30)1 мин
Итого9–10 мин

Спецификация отводит на три задания 22 минуты суммарно. Запас есть; потратить его стоит на перечитывание формулировок: «известно, что» против «при любом», наименьшее против наибольшего.

Как тренироваться

  1. Реши демо руками до задания 19 — таблица с S = 28 и 29 выше — и сверь с кодом.
  2. Пять игр на двух кучах с другими ходами и порогом — меняются только moves и LIMIT.
  3. Три задания на одной куче в формулировке демо 2026 тем же шаблоном с all — чтобы не путать формулировки.
  4. Проверяй moves на примере из условия — в демо он дан явно: из (20, 30) четыре позиции.

Как изменились остальные номера — в обзоре ЕГЭ по информатике 2027: что изменилось; демозадания в контексте варианта — в разборе демоверсии 2027. Рекурсия с кешем и any/all — в подборке Python-идиом; та же идея «ответ позиции зависит от ответов соседей» — в статье о динамическом программировании.

Короткий итог

Задания 19–21 в 2027 году — две кучи, ходы +4 и ×2 к любой из них, конец по сумме. Одна функция win(p, k) с кешем и три условия: any для 19, win(p, 2) для 20, all(win(t, 2)) без all(win(t, 1)) для 21. Ответы демо — 29, 28 48 и 44, и все три меняются, если перепутать any и all или взять наибольшее вместо наименьшего.

Задания 19–21 в форме 2027 года с автопроверкой есть в TuteMe: две кучи, конец по сумме, вопросы как в демо.

Попробовать бесплатно →

Частые вопросы

Что изменилось в заданиях 19–21 в 2027 году

Игра идёт на двух кучах, а не на одной, как в демо 2026: за ход можно добавить 4 камня в одну из куч или удвоить одну из куч, игра заканчивается, когда сумма камней в кучах не меньше 133. Вопросы 20 и 21 прежние — два наименьших S, при которых Петя выигрывает вторым ходом, и наименьшее S, при котором Ваня выигрывает первым или вторым ходом. Изменился вопрос 19: «известно, что Ваня выиграл своим первым ходом» — достаточно одного неудачного хода Пети, а в 2026 требовалось, чтобы Ваня выигрывал при любом ходе Пети. Ответы демо: 29, 28 48, 44.

Как устроена игра в демоверсии 2027

Перед игроками две кучи. За один ход игрок добавляет в одну из куч 4 камня или увеличивает одну из куч в 2 раза. Из позиции (20, 30) за ход можно получить (24, 30), (20, 34), (40, 30) или (20, 60). Игра заканчивается, когда суммарно в кучах 133 камня или больше; победил тот, кто сделал последний ход. В начале в первой куче 17 камней, во второй S, 1 ≤ S ≤ 115. Первый ход делает Петя.

Что значит «Ваня выиграл своим первым ходом» в задании 19

Что после какого-то хода Пети Ваня смог одним ходом довести сумму до 133. Петя при этом не мог выиграть сразу. Спрашивают наименьшее такое S — это 29: после хода Пети (17, 58) Ваня удваивает вторую кучу и получает 17 + 116 = 133. При S = 28 удвоение даёт только 129, и такого хода у Вани нет.

Как решать задание 20 в 2027 году

Найти S, при которых Петя не может выиграть первым ходом, но может вторым при любой игре Вани, и взять два наименьших: 28 и 48. При S = 28 выигрышный первый ход Пети — удвоить вторую кучу до (17, 56): после любого ответа Вани у Пети есть ход до 133. При S = 48 — удвоить первую кучу до (34, 48).

Как решать задание 21 в 2027 году

Найти наименьшее S, при котором у Вани есть стратегия выиграть первым или вторым ходом при любой игре Пети, но нет стратегии выиграть гарантированно первым ходом. Это 44: из четырёх ходов Пети три уводят от мгновенного выигрыша Вани, но после каждого из них Ваня выигрывает своим вторым ходом.

Как решать все три задания одной программой

Функция win(p, k) — есть ли у игрока, который ходит из позиции p, выигрыш не позже чем за k своих ходов, — с кешем. Позиция — кортеж из двух куч, ходы — четыре варианта, конец — по сумме. Дальше три цикла по S с разными условиями. Код в статье печатает 29, 28 48 и 44.

Чем вопросы 2027 отличаются от вопросов прошлых лет

В демо 2026 вопрос 19 звучал так: наименьшее S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом (условие с «любым» — это all). В демо 2027 условие «известно, что Ваня выиграл своим первым ходом» — это any. Вопросы 20 и 21 в обоих годах одинаковые: два наименьших S и наименьшее S. В сборниках встречаются и «наибольшие S» — читай, что просят. Формулировки 19 отличаются одной строкой кода, но ответ другой.

Сколько баллов и времени стоят задания 19–21

По одному первичному баллу: 19 — базовый уровень, 5 минут; 20 — повышенный, 7 минут; 21 — высокий, 10 минут. Все три решаются одной функцией за те же 10–12 минут суммарно, если шаблон отработан.

Готов применять на практике?

В тренажёре TuteMe — 1250 заданий ЕГЭ по информатике с автоматической проверкой и подробным разбором. AI-помощник подсказывает, где ты ошибаешься, и подбирает задания под твой уровень.

Начать бесплатно →

Не пишешь код? Курс «Python для ЕГЭ» — с нуля, первые два модуля бесплатно.