Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами:
A. Вычти 2.
B. Найди целую часть от деления на 2.
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числе 38 результатом является число 2 и при этом траектория вычислений содержит число 16?
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы.
Например, для программы ABB при исходном числе 13 траектория состоит из чисел 11, 5, 2.
Приведём решение на языке Python.
def f(x, y):
if x < y:
return 0
if x == y:
return 1
else:
return f(x - 2, y) + f(x // 2, y)
print(f(38, 16) * f(16, 2))
Ответ: 36.

