Задание №4534. Для игры, описанной в задании 19, найдите минимальное значение S, при котором одновременно выполняются два условия: – у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; – у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.

Задание №4534.
Построение дерева игры по заданному алгоритму. ЕГЭ по информатике

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

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

– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.

Пояснение:
Решим задание, написав программу на языке программирования Python.

def game(s1, s2, move_counter):
    if move_counter == 2 and s1 + s2 >= 231: return 0
    elif move_counter == 3 and s1 + s2 >= 231: return 1
    elif move_counter == 4 and s1 + s2 >= 231: return 0
    elif move_counter == 5 and s1 + s2 >= 231: return 1
    elif move_counter == 5 and s1 + s2 < 231: return 0
    else:
        if move_counter % 2 != 0:
            return game(s1 + 1, s2, move_counter + 1) and game(s1 * 2, s2, move_counter + 1) and game(s1, s2 + 1, move_counter + 1) and game(s1, s2 * 2, move_counter + 1)
        else:
            if move_counter == 2:
                return ((game(s1 + 1, s2, move_counter + 1) != game(s1 * 2, s2, move_counter + 1)) != game(s1, s2 + 1, move_counter + 1)) != game(s1, s2 * 2, move_counter + 1)
            else:
                return game(s1 + 1, s2, move_counter + 1) or game(s1 * 2, s2, move_counter + 1) or game(s1, s2 + 1, move_counter + 1) or game(s1, s2 * 2, move_counter + 1)

final = []
for s2 in range(1,214):
    if game(17, s2, 1) == 1:
        final.append(s2)
print(min(final))

Таким образом, 97 — минимальное значение S, при котором одновременно выполняются два условия.

Показать ответ

Источник: ФИПИ. Открытый банк тестовых заданий
Сообщить об ошибке


Тест с похожими заданиями