Какое наименьшее число камней могло быть суммарно в двух кучах?
Условие
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в большую кучу любое количество камней от одного до трёх или удвоить количество камней в меньшей куче. Если кучи содержат равное количество камней, можно добавить в любую из них от одного до трёх камней, удвоение в этой ситуации запрещено.
Игра завершается, когда общее количество камней в кучах становится более 46. Победителем считается игрок, сделавший последний ход, то есть первым получивший 47 или больше камней в двух кучах.
Известно, что Петя смог выиграть первым ходом. Какое наименьшее число камней могло быть суммарно в двух кучах?
Ответ
Ответ и полный разбор откроются после входа
Посмотреть ответРешение по шагам
Как рассуждать
Решение. Приведём решение на языке Python. def f(x, y, h): if h == 1 and x + y >= 47: return 1 if h == 1 and x + y < 47: return 0 if h < 1 and x + y >= 47: return 0 else: if h % 2 == 0: if x > y: return f(x + 1, y, h +
Осталось ещё 24 шагов
or f(x + 2, y, h +…
or f(x + 3, y, h +…
or f(x, y * 2, h +…
elif x < y: return f(x, y + 1, h +…
or f(x, y + 2, h +…
or f(x, y + 3, h +…
or f(x * 2, y, h +…
elif x == y: return f(x + 1, y, h +…
or f(x + 2, y, h +…
or f(x + 3, y, h +…
or f(x, y + 1, h +…
or f(x, y + 2, h +…
or f(x, y + 3, h +…
else: if x > y: return f(x + 1, y, h +…
or f(x + 2, y, h +…
or f(x + 3, y, h +…
or f(x, y * 2, h +…
elif x < y: return f(x, y + 1, h +…
or f(x, y + 2, h +…
or f(x, y + 3, h +…
or f(x * 2, y, h +…
elif x == y: return f(x + 1, y, h +…
or f(x + 2, y, h +…
or f(x + 3, y, h +…
Бесплатно · займёт минуту