Исполнитель Калькулятор преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами:
A. вычти 7
B. подели на 2
Первая команда уменьшает число на экране на 7, вторая команда делит число на 2 (нецелый результат округляется до ближайшего целого в большую сторону). Программа для исполнителя — это последовательность команд.
Сколько существует таких программ, которые исходное число 300 преобразуют в число 40, при этом траектория вычислений не содержит чисел 61 и 122?
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы.
Например, для программы ABA при исходном числе 100 траектория состоит из
Приведём решение на языке Python.
def f(x, y):
if x < y :
return 0
if x == 61 or x == 122:
return 0
if x == y:
return 1
else:
return f(x - 7, y) + f(x // 2 + x % 2, y)
print(f(300, 40))
Ответ: 12.

