Решение: Программы с заданной траекторией
Исполнитель преобразует число на экране. У исполнителя есть две команды: «Вычти 1» и «Найди целую часть от деления на 2». Первая команда уменьшает число на экране на 1, вторая заменяет число на экране на целую часть от деления числа на 2. Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 32 результатом является число 1, и при этом траектория вычислений содержит число 12? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 122 при исходном числе 10 траектория состоит из чисел 9, 4, 2.
Решение по шагам
6 шаговОбозначим через $f(n)$ число программ, переводящих число $n$ в число 1. Для числа 1 программа может быть пустой, поэтому $f(1)=1$.
$$f(1)=1$$Для остальных чисел последняя команда может быть либо вычитанием 1, либо целочисленным делением на 2.
$$f(n)=f(n-1)+f(\lfloor n/2\rfloor)$$Последовательно вычисляя значения, получаем $f(12)=47$.
Теперь считаем число программ, переводящих 32 в 12. Пусть $g(n)$ — число программ из $n$ в 12. При $n<12$ полагаем $g(n)=0$, а $g(12)=1$.
$$g(n)=g(n-1)+g(\lfloor n/2\rfloor)$$Последовательное вычисление от 13 до 32 даёт $g(32)=10$.
Каждая программа из 32 в 12 может быть независимо продолжена любой программой из 12 в 1.
$$10\cdot47=470$$Где здесь ошибаются
Не учитывают, что траектория должна содержать число 12.
Складывают вместо умножения количество способов пройти два этапа.
Забывают учесть пустую программу для перехода из 1 в 1 при рекуррентном подсчёте.