У исполнителя Удвоитель две команды, которым присвоены номера:
1. прибавь 1,
2. прибавь 5.
Первая из них увеличивает число на экране на 1, вторая увеличивает его на 5. Программа для Удвоителя — это последовательность команд. Сколько есть программ, которые число 2 преобразуют в число 16?
Для сложения справедлив коммутативный (переместительный) закон, значит, порядок команд в программе не имеет значения для результата.
Обе команды увеличивают исходное число, поэтому количество команд не может превосходить 16 — 2 = 14. При этом минимальное количество команд — 6 (т. к. [16 − 2]/5 = 2).
Команд может быть 6, 10 или 14. Пяти командам соответствует набор 221111 (15 возможных вариантов расположения: это число перестановок с повторениями P6(2,4) = 5!/(2! · 3!)), девяти командам — набор 2111111111 (10 возможных вариантов расположения), 14 командам — 11...1 (1 вариант расположения). Всего имеем 26 программ.
Ответ: 26.
Приведём другое решение на языке 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, 16))

