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

У исполнителя Калькулятор две команды, которым присвоены номера:

  1. Прибавь 1
  2. Увеличь число десятков на 1

Например: при помощи команды 2  число 23  преобразуется в 33  . Если перед выполнением команды 2  вторая с конца цифра равна 9  , она не изменяется.

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

Решение 1 (Рекурсия)

def f(a, b):
    if a > b:
        return 0
    if a == b:
        return 1
    return f(a + 1, b) + f(a + 10, b)

print(f(12, 36))

Решение 2 (Динамика)

a = [0] * 37
a[12] = 1
for i in range(13, 37):
    a[i] += a[i - 1]
    a[i] += a[i - 10]
print(a[36])

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