Для игры, описанной в задании 10, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
– Петя не может выиграть за один ход;
– Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания через пробел.
Решение руками
Из предыдущего задания мы знаем, что в значении ,
Ваня гарантированно выигрывает своим первым ходом. Значение, из которого ХОТЯ БЫ ОДИН ход ведет в
или
– это значение, в котором Петя выигрывает вторым ходом. Распишем значение и стратегии, при которых Петя побеждает своим вторым ходом:
. Петя может увеличить количество камней до
ходом
.
Петя может увеличить количество камней до
ходом
.
Петя может увеличить количество камней до
ходом
или до
ходом
.
Петя может увеличить количество камней до
ходом
.
В ответ нужно указать два наименьших значения S. Ответ:
Решение БУ
from functools import lru_cache
@lru_cache(None)
def f(x):
if x >= 80:
return 0
t = [f(x + 2), f(x + 3), f(x * 2)]
h = [i for i in t if i <= 0]
if h:
return -max(h) + 1
else:
return -max(t)
for s in range(1, 79 + 1):
if f(s) == 2:
print(s)