Игроки ходят по очереди, первый ход делает Петя. В игре разрешено
Условие
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. В игре разрешено делать следующие ходы:— убрать из кучи один камень;— если количество камней в куче чётно, убрать половину имеющегося количества;— если количество камней в куче кратно трём, убрать треть имеющегося количества.
Например, если в куче 4 камня, то за один ход можно получить 2 или 3 камня, а если в куче 6 камней, то за один ход можно получить 3, 4 или 5 камней.
Игра завершается, когда количество камней в куче становится меньше 10.Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет меньше 10 камней.В начале игры в куче было S камней, S ≥ 10.Укажите максимальное значение S, при котором Петя не может выиграть первым ходом, но при любом первом ходе Пети Ваня может выиграть своим первым ходом.
Ответ
Ответ и полный разбор откроются после входа
Посмотреть ответРешение по шагам
Как рассуждать
Разбор задачи целиком открывается после входа.
Осталось ещё 20 шагов
Своим первым ходом Петя может получить позицию…
Поскольку 18 — четное число, Ваня уменьшает…
Приведём решение Нахметова Сархана на языке…
or game(pile / 2, mov +…
or game(pile * (2 / 3), mov +…
elif pile % 2 == 0: return game(pile - 1, mov…
or game(pile / 2, mov +…
elif pile % 3 == 0: return game(pile - 1, mov…
or game(pile * (2 / 3), mov +…
else: return game(pile - 1, mov +…
else: if pile % 2 == 0 and pile % 3…
and game(pile / 2, mov +…
and game(pile * (2 / 3), mov +…
elif pile % 2 == 0: return game(pile - 1, mov…
and game(pile / 2, mov +…
elif pile % 3 == 0: return game(pile - 1, mov…
and game(pile * (2 / 3), mov +…
else: return game(pile - 1, mov +…
k = 0for pile in range(100, 9, -1): if…
== 1: print(pile) break for j in range…
Бесплатно · займёт минуту