У исполнителя Прибавитель две команды, которым присвоены номера:
1. прибавь 1,
2. увеличь старшую цифру числа на 1.
Первая из них увеличивает число на экране на 1, вторая увеличивает на 1 старшую (левую) цифру числа, например число 23 с помощью такой команды превратится в число 33. Если старшая цифра числа равна 9, то вторая команда оставляет это число неизменным. Программа для Прибавителя — это последовательность команд. Сколько есть программ, которые число 15 преобразуют в число 38?
Обе команды увеличивают исходное число. Старшая цифра — 1, следовательно, использовать команду 2 более двух раз бессмысленно.
Выпишем программы, в которых команда 2 используется два раза: 11122, 11212, 12112, 21112, 21121, 21211, 22111, 12121, 12211, 11221. Итого 10 программ.
Выпишем программы, в которых команда 2 используется один раз. Использовав эту команду в первой позиции, мы получим из числа 15 число 25, следовательно, после этого необходимо будет дописать ещё 13 команд 1 чтобы получить число 38. Таким образом, получаем программы: 211...1, 121...1, и. т. д. Итого имеем 14 программ (двойка побывала в каждой позиции).
Существует всего одна программа, в которой команда 2 не используется: 111....1.
Таким образом, имеем 10 + 14 + 1 = 25 программ.
Ответ: 25.
Приведём другое решение на языке Python.
def f(x, y):
if x == y:
return 1
if x > y:
return 0
else:
return f(x + 1, y) + f(x + 10, y)
print(f(15, 38))

