Задача к ЕГЭ по информатике на тему «Количество программ из A в B где траектория вычислений N команда» №1

Исполнитель Отрицатель преобразует число, записанное на доске. У исполнителя есть две команды:

1. Вычесть 3

2. Умножить на (-1)

Программа для исполнителя Отрицатель – это последовательность команд. Сколько различных неотрицательных результатов можно получить из исходного числа 82 в ходе исполнения программы, содержащей ровно 8 команд?

a = set() # Множество для ответа

def f(n, c):
    # Важно! Условия должны быть раздельными,
    # чтобы сначала проверялось только кол-во команд,
    # а затем знак числа.
    # Если сделать вместе — программа уйдёт в рекурсию из-за отрицательных чисел,
    # которые получились при c = 8
    if c == 8:
        if n >= 0:
            a.add(n)
    else:
        f(n+3, c+1)
        f(n*(-1), c+1)

f(82, 0)
print(a)

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