Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены номерами:
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.

