
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами:
A. Прибавь 1
B. Поменяй местами
Первая из этих команд увеличивает число на экране на 1. Вторая команда применяется только к числу, у которого цифра в разряде десятков по значению меньше цифры, стоящей в разряде единиц, и действует, заменяя число на экране числом, в котором цифры двух младших разрядов поменялись местами.
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числе 100 результатом является число 141?
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы.
Например, для программы ABA при исходном числе 13 траектория состоит из чисел 14, 41, 42.
Решение.
Это задание ещё не решено, приводим решение прототипа.
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены номерами:
1. Прибавь 1
2. Поменяй местами
Первая из этих команд увеличивает число на экране на 1. Вторая команда может применяться только к числу, у которого цифра разряда десятков по значению меньше цифры, стоящей в разряде единиц, и действует, заменяя число на экране числом, в котором цифры двух младших разрядов поменяны местами. Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числе 110 результатом является число 154?
Приведём решение на языке Python.
def change(x):
x1 = (x % 100) // 10
x2 = x % 10
if x1 < x2:
return x//100*100 + x2 * 10 + x1
else:
return x
def f(x, y):
if x > y :
return 0
if x == y:
return 1
else:
if (x % 100) // 10 < x % 10:
return f(x + 1, y) + f(change(x), y)
else:
return f(x + 1, y)
print(f(110, 154))
Ответ: 34.