У исполнителя Прибавитель две команды, которым присвоены номера:
1. прибавь 1,
2. увеличь старшую цифру числа на 1.
Первая из них увеличивает число на экране на 1, вторая увеличивает на 1 старшую (левую) цифру числа, например число 23 с помощью такой команды превратится в число 33. Если старшая цифра числа равна 9, то вторая команда оставляет это число неизменным. Программа для Прибавителя — это последовательность команд. Сколько есть программ, которые число 15 преобразуют в число 37?
Обе команды увеличивают исходное число. Старшая цифра — 1, следовательно, использовать команду 2 более двух раз бессмысленно. Выпишем программы, в которых команда 2 используется два раза: 1122, 2211, 1212, 2121, 2112, 1221. Итого 6 программ.
Выпишем программы, в которых команда 2 используется один раз. Использовав эту команду в первой позиции, мы получим из числа 15 число 25, следовательно, после этого необходимо будет дописать ещё 12 команд 1 чтобы получить число 37. Таким образом, получаем программы: 211...1, 121...1, и. т. д. Итого имеем 13 программ (двойка побывала в каждой позиции).
Существует всего одна программа, в которой команда 2 не используется: 111....1. Таким образом, имеем 6 + 13 + 1 = 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 + 10, y)
print(f(15, 37))

