У исполнителя Удвоитель две команды, которым присвоены номера:
1. прибавь 1,
2. прибавь 5.
Первая из них увеличивает число на экране на 1, вторая увеличивает его на 5. Программа для Удвоителя — это последовательность команд. Сколько есть программ, которые число 2 преобразуют в число 15?
Для сложения справедлив коммутативный (переместительный) закон, значит, порядок команд в программе не имеет значения для результата.
Обе команды увеличивают исходное число, поэтому количество команд не может превосходить 15 — 2 = 13. При этом минимальное количество команд — 5 (т. к. [15 − 2]/5 = 2).
Команд может быть 5, 9 или 13. Пяти командам соответствует набор 22111 (10 возможных вариантов расположения: это число перестановок с повторениями P5(2,3) = 5!/(2! · 3!)), девяти командам — набор 211111111 (9 возможных вариантов расположения), 13 командам — 11...1 (1 вариант расположения). Всего имеем 20 программ.
Ответ: 20.
Приведём другое решение на языке Python.
def f(x, y):
if x == y:
return 1
if x > y:
return 0
else:
return f(x + 1, y) + f(x + 5, y)
print(f(2, 15))

