Сколько программ исполнителя «прибавь 1, умножь на 3» переводят число 2 в число 22
Условие
У исполнителя есть ровно две команды: команда «прибавь 1» увеличивает число на экране на единицу, команда «умножь на 3» увеличивает его в три раза. Программа для исполнителя — это непустая последовательность таких команд. Сколько существует различных программ, которые преобразуют число 2 в число 22? Две программы считаются различными, если они отличаются хотя бы одной командой или их порядком; промежуточные результаты могут быть любыми.
Ответ
9 программ
Решение по шагам
Шаг 1. Заводим функцию «сколько программ ведёт в число n»
Прямой перебор всех последовательностей команд неудобен: программы бывают разной длины. Вместо этого посчитаем задачу «снизу вверх».
Обозначим через количество программ, переводящих стартовое число 2 в число .
База: — это «пустая» программа, ничего делать не надо. Такое соглашение удобно: оно не портит ответ, потому что до числа 22 всё равно придётся выполнить хотя бы одну команду.
Важное наблюдение: обе команды только увеличивают число. Значит, все промежуточные значения лежат между 2 и 22, а до чисел меньше 2 добраться нельзя, поэтому при .
Шаг 2. Выводим рекуррентную формулу
Посмотрим на последнюю команду программы, которая привела нас в число . Вариантов ровно два.
- Последней была «прибавь 1». Тогда до неё на экране стояло , а способов туда попасть — .
- Последней была «умножь на 3». Это возможно, только если делится на 3; тогда до неё на экране стояло , а способов — .
Варианты не пересекаются, поэтому их количества складываются:
Остаётся аккуратно заполнить таблицу от 2 до 22, не забывая, что для .
Осталось ещё 3 шага — откроются после входа:
- Шаг 3. Заполняем таблицу от 2 до 12
- Шаг 4. Доводим таблицу до 22
- Шаг 5. Проверка «руками»
Бесплатно · займёт минуту
Частые ошибки
- ✗
Считают, что , и получают лишнюю программу в строке : до единицы с двойки добраться нельзя, значит .
- ✗
Применяют слагаемое к числам, не кратным трём (например, пишут ).
- ✗
Считают программы «в обратную сторону» и делят на 3 там, где число не делится нацело.
- ✗
Считают одинаковыми программы с теми же командами в разном порядке: «умножь, потом прибавь» и «прибавь, потом умножь» дают разные результаты и считаются разными программами.
- ✗
Ошибочно требуют, чтобы промежуточные числа не превышали 22 «по смыслу задачи», хотя ограничение возникает само: превысив 22, вернуться назад невозможно.