Исполнитель преобразует целое число, записанное на экране. У исполнителя две команды, каждой команде присвоен номер:
1. Прибавь
2. Прибавь
Первая команда увеличивает число на экране на , вторая увеличивает это число на
. Программа для исполнителя — это последовательность команд.
Сколько существует программ, которые число преобразуют в число
?
Решение 1 (Рекурсия)
def f(s, fi):
if s > fi:
return 0
if s == fi:
return 1
return f(s + 5, fi) + f(s + 8, fi)
print(f(2, 128))
Решение 2 (Динамика)
a = [0] * 129
a[2] = 1
for i in range(3, 129):
a[i] += a[i - 5] + a[i - 8]
print(a[128])