Привет! Давай попробуем разобраться с этим заданием вместе.
Задача у нас такая: у исполнителя калькулятора есть две команды:
- Прибавь 1.
- Умножь на 2.
Нужно выполнить ряд команд, чтобы получить из числа 23 число 999. Надо найти минимальное количество команд для достижения этой цели.
Посмотрим, что у нас получается. Мы начинаем с числа 23, и нам нужно получить 999. Обычно, когда нам нужно достичь большого числа, эффективнее использовать умножение, а не прибавление. Но, так как команды предполагают только умножение на 2, нам, возможно, придется также использовать прибавление.
Давай попробуем идти от конечного числа к начальному - это часто помогает в подобных задачах. Если мы делим 999 на 2, мы получим нецелое число, значит последняя операция точно не могла быть умножением на 2. Следовательно, перед этим был шаг прибавления.
999 (начальное число) - 1 (отнимаем, чтобы получить четное число) = 998
Теперь мы можем поделить 998 на 2.
998 / 2 = 499
Снова получаем нечетное число, значит, перед этим снова была операция прибавления.
499 - 1 = 498
Таким образом:
498 / 2 = 249 (и снова -1 перед этим)
249 - 1 = 248
248 / 2 = 124
124 / 2 = 62
62 / 2 = 31
31 - 1 = 30
30 / 2
