Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
— добавить в кучу 2 камня;
— добавить в кучу 4 камня;
— увеличить количество камней в куче в 2 раза.
Например, из кучи в 20 камней за один ход можно получить кучу из 22, 24 или 40 камней.
Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается, когда количество камней в куче становится не менее 125. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу из 125 или более камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 124.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
ЕГКР информатика Москвы 13.12.2025 – задание №19-21
19. Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при либом ходе Пети Ваня может выиграть своим первым ходом.
Ответ:
20. Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
— Петя не может выиграть за один ход;
— Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
Ответ:
21. Для игры, описанной в задании 19, найдите минимальное значение S, при котором одновременно выполняются два условия:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;
— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Ответ:
Решение на Python
Решение — Ермолаев Денис Дмитриевич
|
1 2 3 4 5 6 7 8 9 10 |
def f(a,m): if a >= 125: return m % 2 == 0 if m == 0: return 0 h = [f(a+2,m-1), f(a+4,m-1), f(a*2,m-1)] return any(h) if (m-1) % 2 == 0 else all(h) print('19) ', [s for s in range(1, 125) if f(s, 2)]) print('20) ', [s for s in range(1, 125) if not f(s, 1) and f(s, 3)]) print('21) ', [s for s in range(1, 125) if not f(s, 2) and (f(s, 2) or f(s, 4))]) |
19) [61, 62]
20) [31, 57, 58, 59, 60]
21) [55, 56]
