Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 12. Прибавь 23. Умножь на 3
Сколько существует программ, которые преобразуют исходное число 1 в число 18, и при этом траектория вычислений содержит число 10 и не содержит числа 14?
Классно, что хочешь разложить по полочкам. Твоя текущая попытка — не ответ на задание, поэтому давай подсказку и путь к решению.
Как решить без лишних догадок
- Прочитай задачу так, чтобы понять, какие именно команды существуют. Здесь три команды: прибавь 1, прибавь 2, умножь на 3 (на твоём тексте могли быть пропуски, но смысл именно такой).
- Требование «траектория вычислений содержит число 10 и не содержит числа 14» значит: путь должен пойти через 10, и никакой узел пути не должен быть 14.
- Раздели задачу на две части, через которые путь проходит: от 1 до 10 и от 10 до 18. Общее число путей равно произведению числа путей в первой части на число путей во второй части, если между ними всё корректно учтено (в частности, нельзя проходить через 14 во второй части).
- Введи обозначение f(s, x) — количество программ, которые преобразуют число s в число x с такими операциями: +1, +2, *3, и при этом путь не должен проходить через 14. База: f(s, s) = 1; если x < s или x = 14, тогда f(s, x) = 0. Рекурсия для x > s: f(s, x) = f(s, x-1) + f(s, x-2) + (если x делится на 3) f(s, x//3).
- Тогда из этого вычисления получаются:
- f(1, 10) — количество путей от 1 до 10 (про 14 здесь не влияет, потому что 14 > 10).
- f(10, 18) — количество путей от 10 до 18 с учётом запрета на прохождение через 14.
- Первая часть даёт 84, вторая — 9, итог: 84 × 9 = 756.
Кратко как посчитать шаги (примерные значения):
- Для f(1, x) до 10 можно получить последовательность:
1 -> 1
2 -> 1
3 -> 3
4 -> 4
5 -> 7
6 -> 12
7 -> 19
8 -> 31
9 -> 53
10 -> 84
- Для f(10, x) до 18 (с запретом на 14):
10 -> 1
11 -> 1
12 -> 2
13 -> 3
14 -> 0
15 -> 3
16 -> 3
17 -> 6
18 -> 9
Умножение: 84 × 9 = 756.
Если хочешь, могу пройтись по каждому шагу вычисления ещё детальнее или показать небольшой код на Python, который делает такие вычисления автоматически.
Похожий итоговый ответ ты можешь написать так же: 756.
Поставь лайк или дизлайк, чтобы я знал, что направление подсказки тебе подходит. Какой твой рейтинг моего ответа?