В игре, описанной в задании 19, в начальный момент в первой куче было
Найдите минимальное из таких
Такое значение S — 18. При S = 18 Петя своим первым ходом может получить позиции (5, 18), (6, 18), (7, 18), и (8, 18). Чтобы гарантированно выиграть, Ваня должен получить
Ответ: 18.
Приведём решение Павела Муленко на языке Python.
def game (n,S1,S2): #S1 -- меньшее из двух количеств
if(n>4):
return 0
if(n<4) and (S1+S2>39):
return 0
if (n==4) and (S1+S2>39):
return 1
if (n==4) and (S1+S2<=39):
return 0
if(n%2==1):
temp = game(n+1,min(S1+1,S2),max(S1+1,S2))
for i in range(2,S1+1):
temp = temp or game(n+1,min(S1+i,S2),max(S1+i,S2))
return temp
else:
temp = game(n+1,min(S1+1,S2),max(S1+1,S2))
for i in range(2,S1+1):
temp = temp and game(n+1,min(S1+i,S2),max(S1+i,S2))
return temp
for S in range(1,36):
if (game(0,min(S,4),max(S,4))==1):
print(S)

