Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу 2 или 3 камня либо увеличить количество камней в куче в 3 раза. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 414.
Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, состоящую из 414 или более камней.
В начальный момент в куче было S камней, 1 ≤ S ≤ 413.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
СтатГрад Вариант ИН2510201 16 декабря 2025 – задание №19-21
19. Укажите сумму таких значений S, при которых Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.
Ответ:
20. Для игры, описанной в задании 19, найдите наименьшее и наибольшее значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
− Петя не может выиграть за один ход;
− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
Ответ:
21.Для игры, описанной в задании 19, найдите сумму таких значений S, при которых одновременно выполняются два условия:
– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;
– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Ответ:
Решение на Python
Решение —
|
1 2 3 4 5 6 7 8 |
def f(s,m): if s >= 414: return m%2==0 if m==0: return 0 h = [f(s+2,m-1), f(s+3,m-1), f(s*3,m-1)] return any(h) if (m-1)%2==0 else all(h) print('19)' , sum([s for s in range(1, 414) if f(s, 2)])) print('20)' , [s for s in range(1, 414) if not f(s, 1) and f(s, 3)]) print('21)' , sum([s for s in range(1, 414) if not f(s, 2) and f(s, 4)])) |
19) 273
20) [133, 134, 135]
21) 263
