19. Выигрышная стратегия: часть 1: #295301
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя.
Известно, что Ваня выиграл своим первым ходом после неудачного хода Пети. Укажите минимальное значение $S$, при котором такая ситуация возможна.
Первый способ – математическое решение
Чтобы получить минимальное $S$, Петя и Ваня должны максимально увеличивать вторую кучу — умножать её на $2$: $(9;S)\rightarrow(9;2S)\rightarrow(9;4S)$.
Для победы Вани:
$9+4S\geq129$,
$4S\geq120$,
$S\geq30$.
Проверка: $(9;30)\rightarrow(9;60)\rightarrow(9;120)$.
После хода Пети сумма равна $69<129$, а после хода Вани: $9+120=129$.
Ответ: $30$.
Второй способ – решение с помощью Python
def moves(a, b):
return [(a + 3, b), (a, b + 3),
(a * 2, b), (a, b * 2)]
for S in range(1, 120):
if any(
a + b < 129 and
any(x + y >= 129 for x, y in moves(a, b))
for a, b in moves(9, S)
):
print(S)
break
Программа перебирает значения $S$ и проверяет, существует ли такой неудачный ход Пети, после которого Ваня может сразу выиграть.
Программа выведет: $30$.