У исполнителя Прибавитель две команды, которым присвоены номера:
1. прибавь 1,
2. прибавь 10.
Первая из них увеличивает число на экране на 1, вторая прибавляет к числу на экране 10.
Программа для Прибавителя — это последовательность команд.
Сколько есть программ, которые число 10 преобразуют в число 32?
Для сложения справедлив коммутативный (переместительный) закон, значит, порядок команд в программе не имеет значения для результата.
Обе команды увеличивают исходное число, поэтому количество команд не может превосходить 32 — 10 = 22. При этом минимальное количество команд — 3, т. к. округляя в большую сторону получаем 3.
Команд может быть 4, 13 или 22. Четырём командам соответствует набор 2211, 6 вариантов расположения, это число перестановок с повторениями P4(2,2) = 4!/(2! · 2!)) = 6. Тринадцати командам — набор 2111111111111, 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(10, 32))

