У исполнителя Калькулятор две команды, которым присвоены номера:
- Прибавь
- Увеличь число десятков на
Например: при помощи команды число
преобразуется в
. Если перед выполнением команды
вторая с конца цифра равна
, она не изменяется.
Сколько есть программ, которые число преобразуют в число
?
Решение 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