Исполнитель преобразует число на экране.
У исполнителя есть две команды, которые обозначены латинскими буквами:
A. Прибавь 1
B. Поменяй местами
Первая из этих команд увеличивает число на экране на 1. Вторая команда может применяться только к числу, у которого цифра разряда десятков по значению меньше цифры, стоящей в разряде единиц, и действует, заменяя число на экране числом, в котором цифры двух младших разрядов поменялись местами.
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числе 101 результатом является число 149, при этом траектория вычислений содержит число 113?
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы.
Например, для программы ABA при исходном числе 13 траектория состоит из чисел 14, 41, 42.
Приведём другое решение на языке Python.
def change(x):
x = str(x)
if int(str(x)[2]) > int(str(x)[1]):
return int(x[0] + x[2] + x[1])
else:
return int(x)
def f(x, y):
if x > y :
return 0
if x == y:
return 1
else:
if int(str(x)[2]) > int(str(x)[1]) :
return f(x + 1, y) + f(change(x), y)
else:
return f(x + 1, y)
print(f(101, 113) * f(113, 149))
Ответ: 16.

