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

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

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

2. Увеличь на 5

3. Умножь на 2

4. Умножь на 3

Программа для исполнителя – это последовательность команд.

Сколько различных результатов можно получить при исходном числе 35 в ходе исполнения программы, содержащей ровно 18 команд, если известно, что нельзя повторять команду с тем же арифметическим действием, что и у сделанной на предыдущем шаге (после умножения нельзя повторять умножение, после сложения нельзя повторять сложение)?

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

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

f(35)

print(len(s))

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