Задача #1560

Задания 19–21

Уровень ЕГЭ

Общее условие для 19–21

(М. Ишимов) Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) два камня или увеличить количество камней в куче в пять раз. У каждого игрока есть неограниченное количество камней, чтобы делать ходы.
Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее 342. Победителем считается игрок, сделавший последний ход, т.е. первым получивший суммарно в кучах из 342 камней или больше.
В начальный момент в первой куче было 11 камней, во второй куче – S камней; 1 <= S <= 325.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Вопрос для задания 21

Для игры, описанной в задании 19, найдите минимальное значение S, при котором одновременно выполняются два условия:
– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;
– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Если найдено несколько значений S, в ответе запишите наименьшее из них.

Ответ
Войдите, чтобы история ответов и статистика сохранялись.
Решение Нажми, чтобы открыть

Ответ

65

Общий разбор связки

def f(s,s2, m):
if s + s2 >= 342: return m%2==0
if m == 0: return 0
h = [f(s+2, s2, m-1), f(s*5, s2, m-1), f(s, s2+2, m-1), f(s, s2*5, m-1)]
return any(h) if m%2!=0 else all(h) # меняем all на any в 19 задаче
print(19, min(s for s in range(1, 326) if f(11,s, 2)))
print(20, [s for s in range(1, 326) if not f(11,s, 1) and f(11,s, 3)][:2])
print(21, min(s for s in range(1, 326) if not f(11,s, 2) and f(11,s, 4)))

Решение для задания 21

Быстрый переход
Перейти к задаче