ЕГЭ по информатике · задание 19

Теория игр: Ваня выигрывает первым ходом

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

Термины

  • Выигрышная позиция — из неё есть ход, после которого соперник проигрывает при любой игре.
  • «Ваня выигрывает первым ходом при любом ходе Пети» — все ходы Пети ведут в позиции, где выигрывают одним ходом.
  • «Неудачный ход Пети» — достаточно одного такого хода.

Как решать

  1. Разобраться с позициями, из которых игра заканчивается одним ходом.
  2. Найти S, из которых все (или хотя бы один) ходы ведут в такие позиции.
  3. Проверить программой f(s, m).

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

  • Перепутать «при любом ходе» (all) и «после неудачного хода» (any).
  • Забыть, что при делении количество округляется вниз.
  • Начать перебор S не с того значения.

Разобранные варианты

Сначала реши сам — на бумаге или программой, потом открой разбор.

Вариант 1

одна куча, убывает · любой ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– убрать из кучи 1 камень;
– убрать из кучи 4 камня;
– уменьшить количество камней в куче в 3 раза (количество камней, полученное при делении, округляется до меньшего).
Например, из кучи в 40 камней за один ход можно получить кучу из 39, 36, 13 камней. Игра завершается, когда количество камней в куче становится не более 20. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из 20 или менее камней. В начальный момент в куче было S камней, S ≥ 21.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

Разбор

Рассуждение. Сначала находим позиции, из которых можно выиграть одним ходом. Нужная S — наименьшая, для которой все ходы Пети ведут именно в такие позиции.

Проверка ответа. Из позиции 63 Петя может получить 21, 59, 62. Из каждой из них Ваня одним ходом завершает игру, а сам Петя первым ходом выиграть не может.

SКто и когда выигрывает при правильной игре
59Петя выигрывает 1-м ходом
60Петя выигрывает 1-м ходом
61Петя выигрывает 1-м ходом
62Петя выигрывает 1-м ходом
63Ваня выигрывает 1-м ходом
64Петя выигрывает 2-м ходом
65Ваня выигрывает 1-м или 2-м ходом

Как работает программа. f(позиция, m) отвечает на вопрос: «выиграет ли нужный игрок не позднее, чем за m ходов (считая ходы обоих)». На нечётных шагах ходит тот, кто должен выиграть, — ему достаточно одного удачного хода (any); на чётных ходит соперник — выигрыш должен получаться при любом его ходе (all).

Ответ: 63

Решение на Python.

def f(s, m):
    if s <= 20:
        return m % 2 == 0
    if m == 0:
        return False
    h = [f(x, m - 1) for x in (s - 1, s - 4, s // 3)]
    return any(h) if m % 2 != 0 else all(h)

print(min(s for s in range(21, 420) if f(s, 2)))

Вариант 2

одна куча, растёт · любой ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– добавить в кучу 1 камень;
– добавить в кучу 4 камня;
– увеличить количество камней в куче в 3 раза.
Например, из кучи в 10 камней за один ход можно получить кучу из 11, 14, 30 камней. Игра завершается, когда количество камней в куче становится не менее 98. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из 98 или более камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 97.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

Разбор

Рассуждение. Сначала находим позиции, из которых можно выиграть одним ходом. Нужная S — наименьшая, для которой все ходы Пети ведут именно в такие позиции.

Проверка ответа. Из позиции 32 Петя может получить 33, 36, 96. Из каждой из них Ваня одним ходом завершает игру, а сам Петя первым ходом выиграть не может.

SКто и когда выигрывает при правильной игре
28Петя выигрывает 2-м ходом
29Петя выигрывает 3-м ходом
30Ваня выигрывает 1-м или 2-м ходом
31Петя выигрывает 2-м ходом
32Ваня выигрывает 1-м ходом
33Петя выигрывает 1-м ходом
34Петя выигрывает 1-м ходом

Как работает программа. f(позиция, m) отвечает на вопрос: «выиграет ли нужный игрок не позднее, чем за m ходов (считая ходы обоих)». На нечётных шагах ходит тот, кто должен выиграть, — ему достаточно одного удачного хода (any); на чётных ходит соперник — выигрыш должен получаться при любом его ходе (all).

Ответ: 32

Решение на Python.

def f(s, m):
    if s >= 98:
        return m % 2 == 0
    if m == 0:
        return False
    h = [f(x, m - 1) for x in (s + 1, s + 4, s * 3)]
    return any(h) if m % 2 != 0 else all(h)

print(min(s for s in range(1, 98) if f(s, 2)))

Вариант 3

две кучи · неудачный ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– добавить в одну из куч 1 камень;
– увеличить количество камней в одной из куч в 3 раза.
Например, пусть в одной куче 10 камней, а в другой — 7; такую позицию обозначим (10, 7). За один ход из неё можно получить любую из позиций: (10, 8), (10, 21), (11, 7), (30, 7). Игра завершается, когда суммарное количество камней в кучах становится не менее 78. Победителем считается игрок, сделавший последний ход. В начальный момент в первой куче было 5 камней, во второй — S камней, 1 ≤ S ≤ 72.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, при котором такая ситуация возможна.

Разбор

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

Проверка ответа. При S = 9 Петя может сделать ход в (5, 27), а Ваня из неё сразу завершает игру: (5, 27) → (5, 81).

Как работает программа. f(позиция, m) отвечает на вопрос: «выиграет ли нужный игрок не позднее, чем за m ходов (считая ходы обоих)». На нечётных шагах ходит тот, кто должен выиграть, — ему достаточно одного удачного хода (any); на чётных ходит соперник — выигрыш должен получаться при любом его ходе (all).

Ответ: 9

Решение на Python.

def f(a, b, m):
    if a + b >= 78:
        return m % 2 == 0
    if m == 0:
        return False
    h = [f(x, y, m - 1) for x, y in ((a + 1, b), (a * 3, b), (a, b + 1), (a, b * 3))]
    return any(h)              # неудачный ход Пети: достаточно одного хода

print(min(s for s in range(1, 73) if f(5, s, 2)))

Вариант 4

одна куча, растёт · любой ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– добавить в кучу 1 камень;
– добавить в кучу 5 камней;
– увеличить количество камней в куче в 2 раза.
Например, из кучи в 10 камней за один ход можно получить кучу из 11, 15, 20 камней. Игра завершается, когда количество камней в куче становится не менее 67. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из 67 или более камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 66.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

Разбор

Рассуждение. Сначала находим позиции, из которых можно выиграть одним ходом. Нужная S — наименьшая, для которой все ходы Пети ведут именно в такие позиции.

Проверка ответа. Из позиции 33 Петя может получить 34, 38, 66. Из каждой из них Ваня одним ходом завершает игру, а сам Петя первым ходом выиграть не может.

SКто и когда выигрывает при правильной игре
29Ваня выигрывает не позднее 3-го хода
30Петя выигрывает 3-м ходом
31Ваня выигрывает 1-м или 2-м ходом
32Петя выигрывает 2-м ходом
33Ваня выигрывает 1-м ходом
34Петя выигрывает 1-м ходом
35Петя выигрывает 1-м ходом

Как работает программа. f(позиция, m) отвечает на вопрос: «выиграет ли нужный игрок не позднее, чем за m ходов (считая ходы обоих)». На нечётных шагах ходит тот, кто должен выиграть, — ему достаточно одного удачного хода (any); на чётных ходит соперник — выигрыш должен получаться при любом его ходе (all).

Ответ: 33

Решение на Python.

def f(s, m):
    if s >= 67:
        return m % 2 == 0
    if m == 0:
        return False
    h = [f(x, m - 1) for x in (s + 1, s + 5, s * 2)]
    return any(h) if m % 2 != 0 else all(h)

print(min(s for s in range(1, 67) if f(s, 2)))

Вариант 5

одна куча, убывает · неудачный ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– убрать из кучи 2 камня;
– убрать из кучи 7 камней;
– уменьшить количество камней в куче в 3 раза (количество камней, полученное при делении, округляется до меньшего).
Например, из кучи в 45 камней за один ход можно получить кучу из 43, 38, 15 камней. Игра завершается, когда количество камней в куче становится не более 25. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из 25 или менее камней. В начальный момент в куче было S камней, S ≥ 26.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, при котором такая ситуация возможна.

Разбор

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

Проверка ответа. При S = 28 Петя может сделать ход в 26, а Ваня из неё сразу завершает игру: 26 → 8.

Как работает программа. f(позиция, m) отвечает на вопрос: «выиграет ли нужный игрок не позднее, чем за m ходов (считая ходы обоих)». На нечётных шагах ходит тот, кто должен выиграть, — ему достаточно одного удачного хода (any); на чётных ходит соперник — выигрыш должен получаться при любом его ходе (all).

Ответ: 28

Решение на Python.

def f(s, m):
    if s <= 25:
        return m % 2 == 0
    if m == 0:
        return False
    h = [f(x, m - 1) for x in (s - 2, s - 7, s // 3)]
    return any(h)              # неудачный ход Пети: достаточно одного хода

print(min(s for s in range(26, 425) if f(s, 2)))

Вариант 6

две кучи · любой ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– добавить в одну из куч 1 камень;
– увеличить количество камней в одной из куч в 2 раза.
Например, пусть в одной куче 10 камней, а в другой — 7; такую позицию обозначим (10, 7). За один ход из неё можно получить любую из позиций: (10, 8), (10, 14), (11, 7), (20, 7). Игра завершается, когда суммарное количество камней в кучах становится не менее 66. Победителем считается игрок, сделавший последний ход. В начальный момент в первой куче было 9 камней, во второй — S камней, 1 ≤ S ≤ 56.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

Разбор

Рассуждение. Сначала находим позиции, из которых можно выиграть одним ходом. Нужная S — наименьшая, для которой все ходы Пети ведут именно в такие позиции.

Проверка ответа. Из позиции (9, 28) Петя может получить (9, 29), (9, 56), (10, 28), (18, 28). Из каждой из них Ваня одним ходом завершает игру, а сам Петя первым ходом выиграть не может.

SКто и когда выигрывает при правильной игре
24Петя выигрывает 4-м ходом
25Ваня выигрывает не позднее 3-го хода
26Петя выигрывает 3-м ходом
27Петя выигрывает 2-м ходом
28Ваня выигрывает 1-м ходом
29Петя выигрывает 1-м ходом
30Петя выигрывает 1-м ходом

Как работает программа. f(позиция, m) отвечает на вопрос: «выиграет ли нужный игрок не позднее, чем за m ходов (считая ходы обоих)». На нечётных шагах ходит тот, кто должен выиграть, — ему достаточно одного удачного хода (any); на чётных ходит соперник — выигрыш должен получаться при любом его ходе (all).

Ответ: 28

Решение на Python.

def f(a, b, m):
    if a + b >= 66:
        return m % 2 == 0
    if m == 0:
        return False
    h = [f(x, y, m - 1) for x, y in ((a + 1, b), (a * 2, b), (a, b + 1), (a, b * 2))]
    return any(h) if m % 2 != 0 else all(h)

print(min(s for s in range(1, 57) if f(9, s, 2)))

Вариант 7

одна куча, убывает · любой ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– убрать из кучи 2 камня;
– убрать из кучи 6 камней;
– уменьшить количество камней в куче в 3 раза (количество камней, полученное при делении, округляется до меньшего).
Например, из кучи в 50 камней за один ход можно получить кучу из 48, 44, 16 камней. Игра завершается, когда количество камней в куче становится не более 30. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из 30 или менее камней. В начальный момент в куче было S камней, S ≥ 31.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

Разбор

Рассуждение. Сначала находим позиции, из которых можно выиграть одним ходом. Нужная S — наименьшая, для которой все ходы Пети ведут именно в такие позиции.

Проверка ответа. Из позиции 93 Петя может получить 31, 87, 91. Из каждой из них Ваня одним ходом завершает игру, а сам Петя первым ходом выиграть не может.

SКто и когда выигрывает при правильной игре
89Петя выигрывает 1-м ходом
90Петя выигрывает 1-м ходом
91Петя выигрывает 1-м ходом
92Петя выигрывает 1-м ходом
93Ваня выигрывает 1-м ходом
94Ваня выигрывает 1-м ходом
95Петя выигрывает 2-м ходом

Как работает программа. f(позиция, m) отвечает на вопрос: «выиграет ли нужный игрок не позднее, чем за m ходов (считая ходы обоих)». На нечётных шагах ходит тот, кто должен выиграть, — ему достаточно одного удачного хода (any); на чётных ходит соперник — выигрыш должен получаться при любом его ходе (all).

Ответ: 93

Решение на Python.

def f(s, m):
    if s <= 30:
        return m % 2 == 0
    if m == 0:
        return False
    h = [f(x, m - 1) for x in (s - 2, s - 6, s // 3)]
    return any(h) if m % 2 != 0 else all(h)

print(min(s for s in range(31, 430) if f(s, 2)))

Вариант 8

одна куча, растёт · неудачный ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– добавить в кучу 1 камень;
– добавить в кучу 4 камня;
– увеличить количество камней в куче в 3 раза.
Например, из кучи в 10 камней за один ход можно получить кучу из 11, 14, 30 камней. Игра завершается, когда количество камней в куче становится не менее 116. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из 116 или более камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 115.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, при котором такая ситуация возможна.

Разбор

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

Проверка ответа. При S = 13 Петя может сделать ход в 39, а Ваня из неё сразу завершает игру: 39 → 117.

Как работает программа. f(позиция, m) отвечает на вопрос: «выиграет ли нужный игрок не позднее, чем за m ходов (считая ходы обоих)». На нечётных шагах ходит тот, кто должен выиграть, — ему достаточно одного удачного хода (any); на чётных ходит соперник — выигрыш должен получаться при любом его ходе (all).

Ответ: 13

Решение на Python.

def f(s, m):
    if s >= 116:
        return m % 2 == 0
    if m == 0:
        return False
    h = [f(x, m - 1) for x in (s + 1, s + 4, s * 3)]
    return any(h)              # неудачный ход Пети: достаточно одного хода

print(min(s for s in range(1, 116) if f(s, 2)))

Вариант 9

две кучи · любой ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– добавить в одну из куч 1 камень;
– увеличить количество камней в одной из куч в 2 раза.
Например, пусть в одной куче 10 камней, а в другой — 7; такую позицию обозначим (10, 7). За один ход из неё можно получить любую из позиций: (10, 8), (10, 14), (11, 7), (20, 7). Игра завершается, когда суммарное количество камней в кучах становится не менее 41. Победителем считается игрок, сделавший последний ход. В начальный момент в первой куче было 8 камней, во второй — S камней, 1 ≤ S ≤ 32.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

Разбор

Рассуждение. Сначала находим позиции, из которых можно выиграть одним ходом. Нужная S — наименьшая, для которой все ходы Пети ведут именно в такие позиции.

Проверка ответа. Из позиции (8, 16) Петя может получить (8, 17), (8, 32), (9, 16), (16, 16). Из каждой из них Ваня одним ходом завершает игру, а сам Петя первым ходом выиграть не может.

SКто и когда выигрывает при правильной игре
12Петя выигрывает 4-м ходом
13Ваня выигрывает не позднее 3-го хода
14Петя выигрывает 3-м ходом
15Петя выигрывает 2-м ходом
16Ваня выигрывает 1-м ходом
17Петя выигрывает 1-м ходом
18Петя выигрывает 1-м ходом

Как работает программа. f(позиция, m) отвечает на вопрос: «выиграет ли нужный игрок не позднее, чем за m ходов (считая ходы обоих)». На нечётных шагах ходит тот, кто должен выиграть, — ему достаточно одного удачного хода (any); на чётных ходит соперник — выигрыш должен получаться при любом его ходе (all).

Ответ: 16

Решение на Python.

def f(a, b, m):
    if a + b >= 41:
        return m % 2 == 0
    if m == 0:
        return False
    h = [f(x, y, m - 1) for x, y in ((a + 1, b), (a * 2, b), (a, b + 1), (a, b * 2))]
    return any(h) if m % 2 != 0 else all(h)

print(min(s for s in range(1, 33) if f(8, s, 2)))

Вариант 10

одна куча, убывает · любой ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– убрать из кучи 1 камень;
– убрать из кучи 6 камней;
– уменьшить количество камней в куче в 3 раза (количество камней, полученное при делении, округляется до меньшего).
Например, из кучи в 40 камней за один ход можно получить кучу из 39, 34, 13 камней. Игра завершается, когда количество камней в куче становится не более 20. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из 20 или менее камней. В начальный момент в куче было S камней, S ≥ 21.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

Разбор

Рассуждение. Сначала находим позиции, из которых можно выиграть одним ходом. Нужная S — наименьшая, для которой все ходы Пети ведут именно в такие позиции.

Проверка ответа. Из позиции 63 Петя может получить 21, 57, 62. Из каждой из них Ваня одним ходом завершает игру, а сам Петя первым ходом выиграть не может.

SКто и когда выигрывает при правильной игре
59Петя выигрывает 1-м ходом
60Петя выигрывает 1-м ходом
61Петя выигрывает 1-м ходом
62Петя выигрывает 1-м ходом
63Ваня выигрывает 1-м ходом
64Петя выигрывает 2-м ходом
65Ваня выигрывает 1-м или 2-м ходом

Как работает программа. f(позиция, m) отвечает на вопрос: «выиграет ли нужный игрок не позднее, чем за m ходов (считая ходы обоих)». На нечётных шагах ходит тот, кто должен выиграть, — ему достаточно одного удачного хода (any); на чётных ходит соперник — выигрыш должен получаться при любом его ходе (all).

Ответ: 63

Решение на Python.

def f(s, m):
    if s <= 20:
        return m % 2 == 0
    if m == 0:
        return False
    h = [f(x, m - 1) for x in (s - 1, s - 6, s // 3)]
    return any(h) if m % 2 != 0 else all(h)

print(min(s for s in range(21, 420) if f(s, 2)))

Для самостоятельного решения

Варианты 11–15 без разборов. Ответ можно проверить кнопкой.

Вариант 11

одна куча, растёт · неудачный ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– добавить в кучу 1 камень;
– добавить в кучу 3 камня;
– увеличить количество камней в куче в 2 раза.
Например, из кучи в 10 камней за один ход можно получить кучу из 11, 13, 20 камней. Игра завершается, когда количество камней в куче становится не менее 89. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из 89 или более камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 88.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, при котором такая ситуация возможна.

Вариант 12

одна куча, убывает · любой ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– убрать из кучи 1 камень;
– убрать из кучи 7 камней;
– уменьшить количество камней в куче в 4 раза (количество камней, полученное при делении, округляется до меньшего).
Например, из кучи в 35 камней за один ход можно получить кучу из 34, 28, 8 камней. Игра завершается, когда количество камней в куче становится не более 15. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из 15 или менее камней. В начальный момент в куче было S камней, S ≥ 16.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

Вариант 13

две кучи · любой ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– добавить в одну из куч 1 камень;
– увеличить количество камней в одной из куч в 2 раза.
Например, пусть в одной куче 10 камней, а в другой — 7; такую позицию обозначим (10, 7). За один ход из неё можно получить любую из позиций: (10, 8), (10, 14), (11, 7), (20, 7). Игра завершается, когда суммарное количество камней в кучах становится не менее 51. Победителем считается игрок, сделавший последний ход. В начальный момент в первой куче было 8 камней, во второй — S камней, 1 ≤ S ≤ 42.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

Вариант 14

одна куча, растёт · неудачный ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– добавить в кучу 1 камень;
– добавить в кучу 5 камней;
– увеличить количество камней в куче в 3 раза.
Например, из кучи в 10 камней за один ход можно получить кучу из 11, 15, 30 камней. Игра завершается, когда количество камней в куче становится не менее 34. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из 34 или более камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 33.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, при котором такая ситуация возможна.

Вариант 15

одна куча, убывает · любой ход Пети

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
– убрать из кучи 1 камень;
– убрать из кучи 7 камней;
– уменьшить количество камней в куче в 2 раза (количество камней, полученное при делении, округляется до меньшего).
Например, из кучи в 50 камней за один ход можно получить кучу из 49, 43, 25 камней. Игра завершается, когда количество камней в куче становится не более 30. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из 30 или менее камней. В начальный момент в куче было S камней, S ≥ 31.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.