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

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

    №19 по КИМ

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

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

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

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

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

    Ответ

    Ответ:

    43

    Решение

    def F(x,y,n):
        if (n==2 ) and x+y>=61: return 1
        if n==2 and x+y<61: return 0
        if (n<2 ) and x+y>=61: return 0
        else:
            if n%2==1:
                if x>y:
                    return F(x,y+1,n+1) or F(x,y+2,n+1) or F(x,y*2,n+1)
                else:
                    return F(x+1,y,n+1) or F(x+2,y,n+1) or F(x*2,y,n+1)
            if n%2==0:
                if x>y:
                    return F(x,y+1,n+1) and F(x,y+2,n+1) and F(x,y*2,n+1)
                else:
                    return F(x+1,y,n+1) and F(x+2,y,n+1) and F(x*2,y,n+1)
    for s in range(1,53):
        if F(8,s,0):
            print(s)
            break

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

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

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

    15
    Задание №37617Задание №89434Задание №39918Задание №89432Задание №37618Задание №35683Задание №89433Задание №43441Задание №37619Задание №37612Задание №43435Задание №31537Задание №31522Задание №31521Задание №31520
    Бесплатно

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

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

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