Задание №20 ЕГЭ Информатика с ответом и решением
Ответ: 101719
Условие
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один или три камня или увеличить количество камней в куче в два раза. Например, имея кучу из 15 камней, за один ход можно получить кучу из 16, 18 или 30 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее 42.
Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 42 или больше камней.
В начальный момент в куче было S камней; 1 меньше или равно S меньше или равно 41.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока — значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по этой стратегии игрока, не являющиеся для него безусловно выигрышными, то есть не являющиеся выигрышными независимо от игры противника.
Найдите три таких значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
— Петя не может выиграть за один ход;
— Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания без разделительных знаков.
Подсказки — как подойти к решению
- Эта задача тоже решается разметкой позиций: для каждой кучи нужно понять, кто выигрывает при правильной игре и за сколько своих ходов — «за один ход», «за два хода».
- Условие «Петя не может выиграть за один ход» отсекает все S, из которых какой-нибудь ход сразу даёт 42 камня или больше. Условие «может выиграть своим вторым ходом независимо от игры Вани» требует найти такой ход Пети, после которого ЛЮБОЙ ответ Вани попадает в позицию, где Петя выигрывает за один ход.
- Проверяй кандидатов полным перебором: отметь позиции «победа за один ход», затем для каждого S проверь оба условия и выпиши подходящие значения по возрастанию без разделителей. Не путай саму кучу S с позициями, в которые игроки её переводят, и не бери кучи, из которых Петя побеждает сразу.
Решение
Возможные значения S: 10, 17, 19. В этих случаях Петя не может выиграть первым ходом. Однако для S = 10, 17 и 19 он может получить кучу 20 (при S = 17 он увеличивает количество камней в куче на три, при S = 19 добавляет к куче 1 камень, при S = 10 увеличивает количество камней в куче в 2 раза). Тогда после первого хода Вани в куче будет 21 камень, или 23 камня, или 40 камней. Во всех случаях Петя увеличивает количество камней в куче в 2 раза и выигрывает вторым ходом.
Таким образом, ответ — 101719.
Ответ: 101719.
Приведём другое решение на языке Python.
def f(x, h):
if h == 4 and x >= 42:
return 1
elif h == 4 and x < 42:
return 0
elif x >= 42 and h < 4:
return 0
else:
if h % 2 != 0:
return f(x + 1, h + 1) or f(x + 3, h + 1) or f(x * 2, h + 1) # стратегия победителя
else:
return f(x + 1, h + 1) and f(x + 3, h + 1) and f(x * 2, h + 1) # сратегия проигравшего
for x in range(1, 42):
if f(x, 1) == 1:
print("Задача 20: ", x)
Типичные ошибки
- Ни одно из этих значений не выдерживает условие «при любом ходе соперника»: у Вани находится ответ, после которого Петя не побеждает своим вторым ходом. Проверяй кандидата по всем ответам соперника, а не по одному удобному.
- Это позиции, из которых Петя выигрывает уже своим первым ходом, а первое условие задания это прямо запрещает. Прежде чем проверять второй ход, убеждайся, что из S нельзя победить за один ход.
В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №20 по информатике