Исполнитель Увеличитель преобразует число на экране.
У исполнителя есть две команды, которым присвоены номера.
1. Вычти 1.
2. Найди целую часть от деления на 3.
Первая из них число на экране уменьшает
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 122 при исходном
Пусть R(n) — количество программ, которые
Траекторию вычисления получения
R(67) = R(66) = R(65) = ... = R(12) = 1;
R(11) = R(12) + R(33) = 2;
R(10) = R(11) + R(32) + R(31) + R(30) = 5;
R(9) = R(10) + R(29) + R(28) + R(27) = 8;
R(8) = R(9) + R(26) + R(25) + R(24) = 11;
R(7) = R(8) + R(23) + R(22) + R(21) = 14;
R(6) = R(7) + R(20) + R(19) + R(18) = 17;
R(5) = R(6) + R(17) + R(16) + R(15) = 20.
Таким образом, количество программ, удовлетворяющих условию задачи, равно 20.
Ответ: 20.
Приведём другое решение на языке Python.
def f(x, y):
if x < y:
return 0
if x == y:
return 1
else:
return f(x - 1, y) + f(x // 3, y)
print(f(67, 33) * f(33, 5))

