Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней, не меньше одного камня в каждой. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в большую кучу любое количество камней от одного до трёх или удвоить количество камней в меньшей куче. Если кучи содержат равное количество камней, можно добавить в любую из них от одного до трёх камней, удвоение в этой ситуации запрещено. Игра завершается в тот момент, когда количество камней в одной из куч
Известно, что Петя смог выиграть первым ходом. Какое наименьшее число камней могло быть суммарно в двух кучах?
Такая ситуация возможна при S = 38. Могут быть кучи
Приведем решение на языке Python.
from itertools import product as p
def Win(ma, mi, k):
ma, mi = max(ma, mi), min(ma, mi)
return 0 if ma >= 40 or mi >= 40 else any([Lose(ma+i,mi,k-1) for i in range(1,4)] + [Lose(ma,mi*2,k-1)] if ma!=mi\
else [Lose(ma+i,mi,k-1) for i in range(1,4)])
def Lose(ma, mi, k):
ma, mi = max(ma, mi), min(ma, mi)
return 1 if ma >= 40 or mi >= 40 else 0 if not k else\
all([Win(ma+i,mi,k-1) for i in range(1,4)] + [Win(ma,mi*2,k-1)] if ma!=mi else [Win(ma+i,mi,k-1) for i in range(1,4)])
print('Задание 19:', min([x+y for x, y in p(range(1,40), repeat=2) if Win(x, y, 1)]))
Ответ: 38.

