Задача к ЕГЭ по информатике на тему «Теория игр» №3

Для игры, описанной в задании 19, найдите сумму всех значений S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:

— Петя не может выиграть за один ход;

— Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.

Решение руками

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

Область проигрыша – это такая область, в которой игрок, попавший в этот промежуток, гарантированно проигрывает в партии.

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

Первый такой случай при 30  камнях. Петя делает ход ∗ 3  (30− > 90  » class=»math» src=»/images/inform/reshen/reshen-4539-5.svg» width=»auto»>), затем, независимо какой ход сделает Ваня, он проиграет. Следующие ситуации происходят при <img decoding=, 86  ,87  , 88  камнях в изначальной куче.

Остаётся теперь сложить и получить ответ: 30 + 85 + 86+ 87+ 88  = 376

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

from  functools import lru_cache
lru_cache(None)
def f(a,c):# параметр ’с’ в этой программе - это счётчик,сделанных ходов в данной партии.
    # В данной задаче он обязателен,поскольку изначальное кол-во камней может быть слишком мало,а также есть ходы,которые не так сильно увеличивают кол-во камней в куче(+2,+4),как,например ход (*3).
    # По этой причине у нас может возникнуть ошибка,связанная с превышением глубины рекурсии или же программа будет слишком долго высчитывать значения.
    if a >= 271:return 0
    if c > 7:return 1000 #Возвращаем очень большое значение,которое указывает программе,что при таком значении невозможно дойти до выигрыша при малом количестве ходов.
    t = [f(a+2,c+1),f(a+4,c+1),f(a*3,c+1)]
    n = [i for i in t if i <= 0]
    if n:return -max(n) + 1
    return -max(t)
s = 0
for i in range(1,272):
    if f(i,0) == 2:
        s += i #Складываем значения,при которых Петя выигрывает вторым ходом
print(s)


Ответ: 376
Оцените статью
Я решу все!