Задача к ЕГЭ по информатике на тему «количество программ из a в b» №1

Дед Мороз написал программу для исполнителя ЮП, который преобразовывает числа. У исполнителя ЮП две команды, которым присвоены номера:

1. прибавь 1,

2. прибавь 3.

Первая из них увеличивает на 1 число на экране, вторая увеличивает это число на 3.

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

Сколько существует программ, которые число 5 преобразуют в число 42?

Решение рекурсией:

def f(x, y):
    if x > y:
        return 0
    if x == y:
        return 1
    return f(x + 1, y) + f(x + 3, y)

print(f(5, 42))

 

Решение динамикой:

a = [0] * 100
a[5] = 1
for i in range(6, 43):
    a[i] = a[i - 1] + a[i - 3]

print(a[42])

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