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

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

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

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

(Е. Джобс) Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 10 камней или увеличить количество камней в куче в два раза. Игра завершается в тот момент, когда количество камней в куче становится не менее 82. Игрок, сделавший ход, который привел к значению 82 или более, считается проигравшим. В начальный момент в куче было S камней, 1 ≤ S ≤ 81.
Ответьте на следующие вопросы:
  Вопрос 1. Известно, что Петя одержал победу, совершив один ход за игру. Найдите минимальное значение S, при котором Петя гарантированно одерживает победу.
  Вопрос 2. Найдите все значения S такие, при которых Ваня совершает не более одного хода и выигрывает. При этом у Вани нет стратегии, которая позволяла бы ему гарантированно выиграть, не совершив ни одного хода. В качестве ответа приведите минимальное и максимальное значения S.
  Вопрос 3. Известно, что Петя выигрывает, сделав не более двух ходов. Укажите минимальное значение S, если известно, что Петя не может гарантированно выиграть, сделав один ход.
Ответ: 1) 36<br/>2) 52 61<br/>3) 26

Шаблон решения на 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 и отслеживать свой классный рейтинг.