Решение: Траектории команд исполнителя
Исполнитель преобразует число на экране. У исполнителя есть две команды: A — вычти 2; B — найди целую часть от деления на 2. Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 30 результатом является число 1 и при этом траектория вычислений содержит число 12? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы ABB при исходном числе 13 траектория состоит из чисел 11, 5, 2.
Решение по шагам
4 шагаТак как обе команды уменьшают число, траектория может содержать число 12 только один раз. Поэтому любую подходящую программу можно однозначно разделить на путь от 30 до 12 и путь от 12 до 1.
Обозначим через $f(n)$ количество способов получить число 12 из числа $n$. Для $n > 12$ имеем $f(n)=f(n-2)+f(\lfloor n/2\rfloor)$, поскольку последней выполненной командой может быть A или B. Последовательное вычисление даёт $f(30)=3$.
$$f(30)=f(28)+f(15)=3$$Обозначим через $g(n)$ количество способов получить число 1 из числа $n$. Аналогично, $g(n)=g(n-2)+g(\lfloor n/2\rfloor)$, а $g(1)=1$. Вычисление значений от 1 до 12 даёт $g(12)=13$.
$$g(12)=g(10)+g(6)=9+4=13$$Перемножаем количество вариантов первой и второй частей программы.
$$3 \cdot 13=39$$Где здесь ошибаются
Не разделяют траекторию на две части относительно числа 12.
Считают только количество способов дойти от 30 до 12 или только от 12 до 1.
Забывают, что после команды B получается целая часть от деления на 2.