OpenFIPI 2.0
20
6
3AC768
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
–– Петя не может выиграть за один ход;
–– Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
10 19
from functools import lru_cache
def m(x, y):
return (x + 1, y), (x * 3, y), (x, y + 1), (x, y * 3)
@lru_cache(None)
def g(x, y):
if x + y >= 65:
return 'W'
if any(g(a, b) == 'W' for a, b in m(x, y)):
return 'W1'
if all(g(a, b) == 'W1' for a, b in m(x, y)):
return 'L1'
if any(g(a, b) == 'L1' for a, b in m(x, y)):
return 'W2'
if all(g(a, b) in ('W1', 'W2') for a, b in m(x, y)):
return 'L2'
for s in range(1, 59):
if g(6, s) == 'W2':
print('W2', s)
if g(6, s) == 'L2':
print('L2', s)
Просмотреть отправленные ответы 3AC768