Задание №19 ЕГЭ: Теория игр: выигрышная стратегия (1 ход) (ID 4181) — Ответ, условие и разбор | СмартКИМ
Не нашли свое задание? Попробуйте КИМСканер для быстрого поиска решения по фото или тексту: Открыть КИМСканер
СмартКИМ ЕГЭ Информатика
Каталог №19 Вариант ЕГЭ Разбор в СмартКИМ

Задание №19: Теория игр: выигрышная стратегия (1 ход)

Задача #4181 Формат ЕГЭ 2026 1 первичный балл
Основные типы и прототипы задания №19:
Одна куча камней (Победа за 1 ход) Две кучи камней (Победа Вани за 1 ход)

Условие задания

(Е. Джобс) Два игрока, Петя и Ваня, играют в следующую игру. У игроков есть табличка, на которой записана пара неотрицательных целых чисел. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может заменить любое число на сумму обоих чисел. Так, например, если перед ходом игрока была позиция (3, 5), то после его хода будет позиция (8, 5) или (3, 8). Игра завершается в тот момент, когда сумма чисел пары становится не менее 45. Победителем считается игрок, сделавший последний ход.
Ответьте на следующие вопросы:
  Вопрос 1. Известно, что игра началась в позиции (7, S), при этом Ваня одержал победу после неудачного хода Пети. Укажите минимальное значение S, при котором это возможно.
  Вопрос 2. Найдите значения S, при которых Петя при правильной игре гарантированно выигрывает своим вторым ходом из позиции (6, S). В качестве ответа укажите сначала минимальное, затем максимальное значение.
  Вопрос 3. Известно, что при игре из позиции (S, S) Ваня гарантированно выигрывает своим вторым ходом при любой игре Пети. Найдите минимальное значение S, при котором это возможно.
Ответ: 1) 11<br/>2) 7 13<br/>3) 4

Шаблон решения на Python

# === Задания 19-21: Теория игр (1 или 2 кучи) ===
def moves(h):
    return [h + 1, h * 2]

def game(h):
    if h >= 129: return 0  # Победа
    next_g = [game(m) for m in moves(h)]
    if any(g == 0 for g in next_g): return 1  # Победа 1 ходом (П1)
    if all(g == 1 for g in next_g): return 2  # Победа 1 ходом (В1)
    if any(g == 2 for g in next_g): return 3  # Победа 2 ходом (П2)
    if all(g in (1, 3) for g in next_g): return 4  # Победа 2 ходом (В2)
    return -1

for s in range(1, 129):
    res = game(s)
    if res in (1, 2, 3, 4):
        print(f"S={s}: {['П1', 'В1', 'П2', 'В2'][res-1]}")

Подготовка к ЕГЭ по информатике на 85+ баллов

В интерактивном тренажёре СмартКИМ вы можете решать варианты на время, писать и запускать код Python в браузере, работать с таблицами Excel и отслеживать свой классный рейтинг.