19. Выигрышная стратегия: часть 1: #295311
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя.
Укажите минимальное значение $S$, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.
Первый способ – математическое решение
За один ход можно выиграть из позиции $31$ и больше, так как: $31\cdot2=62\geq61$.
Проверим $S=29$. После любого хода Пети получится:
$29\rightarrow31$;
$29\rightarrow34$;
$29\rightarrow58$.
Из каждой позиции Ваня выигрывает одним ходом:
$31\rightarrow62$;
$34\rightarrow68$;
$58\rightarrow63$.
При $S=28$ Петя может сделать ход $28\rightarrow30$, после которого Ваня сразу выиграть не может.
Следовательно, минимальное значение $S=29$.
Ответ: $29$.
Второй способ – решение с помощью Python
def moves(x):
return [x + 2, x + 5, x * 2]
def win1(x):
return x < 61 and any(
y >= 61 for y in moves(x)
)
for S in range(1, 61):
if not win1(S) and all(win1(x) for x in moves(S)):
print(S)
break
Программа проверяет, что Петя не может выиграть первым ходом, а после любого его хода Ваня может выиграть сразу.
Программа выведет: $29$.