Задача к ЕГЭ по информатике на тему «количество результатов выполнения программ» №5

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

1. Увеличь на 8

2. Уменьши на 4

3. Раздели на 2

Причём команду 3 можно применять только для чётных чисел. Программа для исполнителя – это последовательность команд.

Сколько различных натуральных результатов можно получить при исходном числе 16 в ходе исполнения программы, содержащей ровно 10 команд, если известно, что нельзя повторять третью команду, если она была использована на предыдущем шаге.

Программное решение:

# Множество различных результатов работы программы

# c — номер команды на предыдущем шаге
# k — счётчик количества совершенных команд
def f(a, c = 0, k = 0):
    if k == 10:
        if a >= 1:
            s.add(a)
        return 0
    f(a + 8, 1, k + 1)
    f(a - 4, 2, k + 1)
    if c != 3 and a % 2 == 0:
        f(a // 2, 3, k + 1)

s = set()
f(16)
print(len(s))

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