Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. В игре разрешено делать следующие ходы:
— убрать из кучи один камень;
— если количество камней в куче чётно, убрать половину имеющегося количества;
— если количество камней в куче кратно трём, убрать треть имеющегося количества.
Например, если в куче
Игра завершается, когда количество камней в куче становится
Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет
В начале игры в куче было
Укажите максимальное
Такое значение S — 23. Своим первым ходом Петя может получить
Приведём решение на языке Python.
def f(x,k,v):
if x<12:
return k in v
if k >= max(v):
return 0
h = [f(x-1,k+1,v)]
if x % 2 ==0:
h.append(f(x//2,k+1,v))
if x % 3 ==0:
h.append(f(x - x//3,k+1,v))
if k%2 != max(v) % 2:
return any(h)
else:
return all(h)
for x in range (10000,10+1,-1):
if f(x,0,[2]) == 1:
print('Задача 19:',x)
break
Ответ: 23.

