Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может
а) добавить в любую кучу один камень;
б) увеличить количество камней в любой куче в четыре раза.
Игра завершается в тот момент, когда суммарное количество камней в двух кучах становится не менее 95, побеждает игрок, сделавший последний ход. В начальный момент в первой куче было 5 камней, а во второй – S камней, 1 ≤ S ≤ 89. дание 20.
Найдите значение S, при котором одновременно выполняются два условия:
– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;
– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.

Показать решение

def F(x, y, poz):
    if x + y >= 95 and (poz == 3 or poz == 5):
        return 1
    if x + y < 95 and poz == 5:
        return 0
    else:
        if x + y >= 95:
            return 0
    if poz % 2 == 0:
        return F(x + 1, y, poz + 1) or F(x, y + 1, poz + 1) or F(x * 4, y, poz + 1) or F(x, y * 4, poz + 1)
    if poz % 2 == 1:
        return F(x + 1, y, poz + 1) and F(x, y + 1, poz + 1) and F(x * 4, y, poz + 1) and F(x, y * 4, poz + 1)   
for i in range(1, 90):
    if F(5, i, 1):
        print(i)

Ответ: 21