Какое наименьшее число камней могло быть суммарно в двух кучах?
Условие
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней, не меньше одного камня в каждой. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в большую кучу любое количество камней от одного до трёх или удвоить количество камней в меньшей куче. Если кучи содержат равное количество камней, можно добавить в любую из них от одного до трёх камней, удвоение в этой ситуации запрещено.
Игра завершается в тот момент, когда количество камней в одной из куч достигает 48. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 48 или больше камней. Известно, что Петя смог выиграть первым ходом. Какое наименьшее число камней могло быть суммарно в двух кучах?
Ответ
Ответ и полный разбор откроются после входа
Посмотреть ответРешение по шагам
Как рассуждать
Разбор задачи целиком открывается после входа.
Осталось ещё 22 шагов
Могут быть кучи (45, 44 и меньше), (46, 45 и…
Приведем решение Даниила Травинова на языке…
and mov == 2: return 1 elif mov > 2: return…
or game(p1 + 2, p2, mov +…
or game(p1 + 3, p2, mov +…
or game(p1, p2 * 2, mov +…
elif p1 == p2: return game(p1 + 1, p2, mov +…
or game(p1 + 2, p2, mov +…
or game(p1 + 3, p2, mov +…
or game(p1, p2 + 1, mov +…
or game(p1, p2 + 2, mov +…
or game(p1, p2 + 3, mov +…
else: return game(p1, p2 + 1, mov +…
or game(p1, p2 + 1, mov +…
or game(p1, p2 + 3, mov +…
or game(p1 * 2, p2, mov + 1)sum =…
== 1: sum = min(sum, i + j)print(sum)…
else all(moves)print('Задание 19:'…
for s2 in range(1…
if g(s1, s2, 0, [1])]))print('Задание 20:'…
if g(13, s2, 0, [3]) and not g(13, s2,…
if g(39, s2, 0, [2, 4]) and not g(39, s2,…
Бесплатно · займёт минуту