Нам нужно получить число 25 из числа 4, используя не более 5 команд (1 - вычти 1, 2 - умножь на 3).
Попробуем строить алгоритм в обратном порядке или прямом.
Прямой путь:
Попробуем другой подход. Так как нам нужно получить число 25, а команды 2 (умножить на 3) увеличивают число быстро, скорее всего, она будет использоваться.
Если последнее действие - вычесть 1 (команда 1), то предыдущее число было 26. Из 4 получить 26 за 4 команды.
Если последнее действие - умножить на 3 (команда 2), то предыдущее число было 25/3, что не целое. Значит, последняя команда не может быть умножение на 3.
Итак, последняя команда - вычти 1. Предыдущее число 26.
Как получить 26 из 4 за 4 команды:
Рассмотрим обратный порядок: 25. Последняя команда - вычти 1, предыдущее число 26. Последняя команда - вычти 1, предыдущее число 27. Последняя команда - вычти 1, предыдущее число 28. Последняя команда - вычти 1, предыдущее число 29.
Рассмотрим, если последнее действие — вычти 1. Значит, получили 25 из 26. Как получить 26 из 4?
4 * 3 = 12 (2)
12 + 1 = 13 (1)
13 + 1 = 14 (1)
14 + 1 = 15 (1)
15 + 1 = 16 (1)
Попробуем иначе:
4 -> (2) 12 -> (2) 36 (слишком много)
4 -> (2) 12 -> (1) 11 -> (2) 33 (слишком много)
4 -> (1) 3 -> (2) 9 -> (2) 27 (близко)
4 -> (1) 3 -> (2) 9 -> (2) 27 -> (1) 26 -> (1) 25 (5 команд: 12211)
Проверим:
Этот алгоритм содержит 5 команд.
Ответ: 12211