решай.ai · шпаргалка

Задание 21: Выигрышная стратегия. Задание 3

ЕГЭ Информатика

Как выглядит

Типовая формулировка: два игрока по очереди изменяют кучу (или две кучи) камней по фиксированным правилам (добавить kk камней, умножить на mm и т.п.), первый ход делает Петя. Игра заканчивается, когда количество камней становится не менее NN; выигрывает сделавший последний ход. Задан диапазон начального количества камней SS, обычно 1≤S≤N−11 \le S \le N-1.

…

Что нужно знать

  • Позиция — количество камней перед очередным ходом (для одной кучи — число, для двух куч — пара (a,b)(a,b)).
  • Игра завершается, как только позиция становится ≥N\ge N; выигрывает игрок, сделавший последний ход.
  • Проигрышная позиция (П): все ходы из неё ведут в выигрышные позиции соперника.
  • Выигрышная позиция (В): существует ход в позицию ≥N\ge N либо в проигрышную позицию соперника. x∈В  ⟺  ∃ x→x′:x′≥N или x′∈Пx \in \text{В} \iff \exists\, x \to x' : x' \ge N \ \text{или}\ x' \in \text{П} x∈П  ⟺  ∀ x→x′:x′∈Вx \in \text{П} \iff \forall\, x \to x' : x' \in \text{В}
  • Для задач «выиграть не позже второго хода» нужны более тонкие множества: A={x<N:∃ x→y, y≥N}A = \{x < N : \exists\, x \to y,\ y \ge N\} — из xx можно выиграть немедленно; B={x<N, x∉A:∀ x→x′, x′∈A}B = \{x < N,\ x \notin A : \forall\, x \to x',\ x' \in A\} — из xx нельзя выиграть сразу, но любой ход соперника загоняет его в AA для следующего игрока; C={x<N:∃ x→y, y≥N или y∈B}C = \{x < N : \exists\, x \to y,\ y \ge N \ \text{или}\ y \in B\} — из xx можно выиграть не позднее второго хода.
  • Условие «выиграть не позже второго хода, но не первым»: все ходы противника из SS попадают в CC, и при этом не все ходы противника из SS попадают в AA.

Алгоритм

  1. Выписать порог окончания игры NN и диапазон начальных значений SS.
  2. Найти множество AA — позиции немедленного выигрыша, выразив условия каждой операции через неравенства относительно NN.
  3. Если нужно «не позже второго хода» — найти BB: позиции, не входящие в AA, из которых все ходы ведут в AA.
  4. Построить C=A∪{x:∃ x→y, y∈B}C = A \cup \{x : \exists\, x\to y,\ y\in B\}.
  5. Если по условию нужно «не позже третьего/четвёртого хода», аналогично строить следующие множества (по тому же принципу «все ходы соперника из позиции ведут в уже построенное множество»).
  6. Перебрать SS от минимального (или максимального, если ищется наибольшее) значения и для каждого проверить: все ли ходы из SS попадают в нужное множество (например CC), и выполняется ли дополнительное условие (например «не все ходы из SS попадают в AA»). …

Ловушки

  • Путают «выиграть не позже второго хода» с обычной выигрышной стратегией — забывают, что нужно гарантировать успех именно к определённому ходу, а не когда-либо.
  • Забывают проверить второе условие задачи (например, «нет стратегии выиграть первым ходом») и останавливаются после нахождения множества CC.
  • В множество BB включают позицию, для которой ходом соперника можно попасть в AA, но не всеми ходами — для BB нужно, чтобы абсолютно все доступные ходы вели в AA.
  • Ошибаются на границе неравенств: «не менее NN» означает ≥N\ge N, а не >N>N; пропуск этой детали сдвигает все множества на единицу.
  • Для двух куч забывают, что ход может менять только одну кучу или обе сразу — нужно внимательно перечислить все варианты хода, иначе множество позиций строится неверно. …
reshay.ai/ege/informatika/zadanie-21 — задачи с разборами и тренажёр

Полный гайд и задачи задания 21 →