Исполнитель Май16 преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1
2. Прибавить 2
Первая команда увеличивает число на экране на 1, вторая увеличивает его на 2. Программа для исполнителя Май16 — это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является число 12 и при этом траектория вычислений содержит число 7?
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет состоять из чисел 8, 10, 11.
Искомое количество программ равно произведению количества программ, получающих из числа 1 число 7, на количество программ, получающих из числа 7 число 12. Заметим, что количество способов получить из числа 7 число 12 равно количеству способов получить из числа 1 число 6.
Пусть - количество способов получить из числа 1 число х. Заметим, что для x > 2:
Приведём другое решение на языке Python.
def f(x, y):
if x > y:
return 0
if x == y:
return 1
else:
return f(x + 1, y) + f(x + 2, y)
print(f(1, 7) * f(7, 12))

