Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Тренировки Пробники Статистика Карточки Учебник Об экзамене Учительская
  • Тренажёр заданий ЕГЭ
  • Тренажёр ЕГЭ по Информатике
  • Список заданий №21
  • Задание №21
  • Задание №89580 ЕГЭ Информатике

    Условие задания #89580

    №21 по КИМ

    Два игрока, Лиза и Альберт, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первой ход делает Лиза. За один ход игрок может добавить в меньшую кучу один камень, добавить два камня или увеличить количество камней в куче в два раза. Если кучи содержат равное количество камней, можно добавить в любую из них от одного до двух камней, удвоение в этой ситуации запрещено. Изменять количество камней в большей куче не разрешается. Пусть, например, в начале игры в первой куче 5 камней, а во второй  — 8 камней, будем обозначать такую позицию (5, 8). Лиза первым ходом должна добавлять камни в первую кучу, она может получить позиции (6, 8), (7, 8) и (10, 8). Если Лиза получает позиции (6, 8) и (7, 8), Альберт следующим ходом тоже должен добавлять камни в первую кучу, а если Лиза получает позицию (10, 8), Альберт должен добавлять камни во вторую кучу, так как теперь она стала меньшей.

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

    В начальный момент в первой куче было 12 камней, а во второй  — S камней, 1 ≤ S ≤ 68.

    Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.


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

    Ответ

    Ответ:

    50

    Решение

    def f(x, y, hod):
    if x+y>=81: return hod%2==0
    if hod==0: return
    if x>y:
    arr = [f(x,y+1,hod-1), f(x,y+2,hod-1), f(x,y*2,hod-1)]
    if x==y:
    arr = [f(x+1,y,hod-1), f(x,y+1,hod-1), f(x+2,y,hod-1), f(x,y+2,hod-1)]
    if x<y:
    arr = [f(x+1,y,hod-1), f(x+2,y,hod-1), f(x*2,y,hod-1)]
    if (hod-1)%2==0:
    return any(arr)
    else:
    return all(arr)
    print(max([s for s in range(1,69) if f(12,s,4) and not f(12,s,2)]))

    Видеоразбор:

    Понятно ли решение?

    Похожие задания

    15
    Задание №37888Задание №89436Задание №37889Задание №37890Задание №89438Задание №37891Задание №37893Задание №37945Задание №37966Задание №31541Задание №31922Задание №31928Задание №32078Задание №31932Задание №31931
    Бесплатно

    Решай задачи ЕГЭ в приложении

    Скачивай наш Тренажер ЕГЭ на iPhone или Android и тренируйся в любое время и в любом месте!

    Саша — ассистент в телеграмме