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


Число 8 можно получить f(7)+f(6) способами т. е. 21 способ. И тогда нужно на 3 умножить не 13, а 21. 21*3=63. Ответ 63.
В траектории должно встречаться число 7, поэтому 8 нельзя получить из 6 и f(8) = f(7).