Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Первый ход делает Петя. За один ход игрок может: добавить в одну из куч 1 камень; увеличить количество камней в одной из куч в 3 раза. Игра завершается, когда суммарное количество камней в двух кучах становится не менее 155. В начальный момент в первой куче 15 камней, во второй — камней; .
Для игры, описанной в задании 19, найдите два наименьших значения , при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
-
Петя не может выиграть за один ход;
-
Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
Решение:
Решение на Python:
from functools import lru_cache
@lru_cache(None)
def F(k1, k2, x):
if k1+k2 >= 155: return x % 2 == 0
if x == 0: return 0
h = [F(k1+1,k2,x-1), F(k1*3,k2,x-1),
F(k1,k2+1,x-1), F(k1,k2*3,x-1)]
return any(h) if x % 2 != 0 else all(h)
res = [k for k in range(1, 140) if not F(15, k, 1) and F(15, k, 3)]
print(res[0], res[1])