Исполнитель Увеличитель234 преобразует число, записанное на экране. У исполнителя три команды, которым присвоены номера:
1. Прибавь 2
2. Прибавь 3
3. Прибавь 4
Первая из них увеличивает число на экране на 2, вторая увеличивает это число на 3, а третья – на 4. Программа для исполнителя Увеличитель234 – это последовательность команд.
Сколько есть программ, которые число 23 преобразуют в число 38?
Заметим, что все операции только лишь прибавляют некоторую константу к числу. Поэтому не важно, в каком порядке выполнять некоторый данный набор команд. Пусть x − количество первых команд, y − вторых, а z − третьих. Составим уравнение:
А именно найдём с его помощью все наборы команд, которые подходят под условие. И уже для каждого набора в отдельности подсчитаем количество возможных перестановок.
Найдём все решения уравнения: (0, 1, 3), (2, 1, 2), (4, 1, 1), (6, 1, 0), (1, 3, 1), (3, 3, 0), (0, 5, 0).
Количество перестановок для данного набора посчитаем по формуле подсчёта перестановок с повторениями:
Пусть каждого вида команд a, b и с. Тогда всего перестановок из этих команд будет
Найдём теперь ответ на задачу, просуммировав ответы для каждого набора:
Ответ: 112.
Приведём другое решение на языке Python.
def f(x, y):
if x == y:
return 1
if x > y:
return 0
else:
return f(x + 2, y) + f(x + 3, y) + f(x + 4, y)
print(f(23, 38))


Ответ: 189
Такое ощущение, что приведенное решение "из другой оперы"
Решение не совсем стандартное, это правда, но вы должны понимать, что цель работников сайта — научить людей решать задачи. А чем больше подходов к решению задачи известно, тем проще она решается. Поэтому иногда мы даём не совсем обычные решения, дабы расширить арсенал пользователей сайта. Стандартные же решения всегда можно найти, открыв пару-тройку задач подобного типа.
И ответ всё-таки 112. Как вы решали?