Присоединиться

11 класс·высокий уровень

Найдите наибольшее значение S, при котором у Пети есть выигрышная

Условие

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень, добавить два камня или увеличить количество камней в куче в два раза. При этом нельзя повторять ход, который этот же игрок делал на предыдущем ходу. Повторять чужие ходы и свои более старые ходы разрешается.

Например, если в начале игры в куче 3 камня, Петя может первым ходом получить кучу из 4, 5 или 6 камней. Если Петя получил кучу из 5 камней (добавил два камня), то следующим ходом Ваня может получить 6, 7 или 10 камней. Если Ваня добавил один камень и получил 6 камней, то вторым ходом Петя может получить 7 или 12 камней. Получить 8 камней Петя не может, так как для этого нужно добавить 2 камня, а Петя делал это на предыдущем ходу.

Чтобы делать ходы, у каждого игрока есть неограниченное количество камней.

Игра завершается, когда количество камней в куче становится не менее 21. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 21 или больше камней. В начальный момент в куче было S камней, 1 ⩽ S ⩽ 20.Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

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

Ответ

Ответ и полный разбор откроются после входа

Посмотреть ответ

Решение по шагам

  1. Как рассуждать

    Разбор задачи целиком открывается после входа.

Осталось ещё 18 шагов

  1. При S = 5 Петя своим первым ходом может…

  2. Ваня своим первым ходом может получить одну…

  3. В позиции 14 Петя своим вторым ходом…

  4. Приведём другое решение на языке Python…

  5. and x >= 21: return 1 elif h == 6 and x <…

  6. and f(x + 2, h + 1, p…

  7. and f(x * 2, h + 1, p…

  8. # стратегия проигравшего elif h == 4: if v ==…

  9. == 1: print("Задача 21:", x) # Исключаем…

  10. # стратегия победителя else: return f(x +…

  11. and f(x + 2, h +…

  12. and f(x * 2, h +…

  13. # стратегия проигравшего(любой ход) for x in…

  14. == 1: print("Победа Пети первым ходом:", x) #…

  15. or f(x + 2, h +…

  16. or f(x * 2, h +…

  17. # стратегия победителя elif h == 3: if m ==…

  18. == 1: print("Победа Пети вторым ходом:", x)…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Выигрышная стратегия. Задание 2»