Ctrl K

Степени двойки со сдвигом

Средняя
Даны целые числа start и shift. За один ход можно выбрать целое i от 0 до 60 и вычесть из start число 2^i + shift. Верните наименьшее число ходов, после которого start станет равно нулю, или -1, если это невозможно.
Пример 1
start=7, shift=1 → 2

За один ход степень двойки должна равняться 7 − 1 = 6, а 6 — не степень двойки. За два хода две степени двойки должны дать 7 − 2 = 5 = 4 + 1: вычитаем 4 + 1 = 5 и 1 + 1 = 2. Ответ 2.

Пример 2
start=4, shift=5 → -1

Даже самый маленький вычитаемый 2⁰ + 5 = 6 больше 4, а число только уменьшается — до нуля не дойти.

Пример 3
start=12, shift=-4 → 1
Ограничения
  • 1 ≤ start ≤ 10⁹
  • -10⁹ ≤ shift ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиБери из любой кучки СредняяНаборы с полным OR СредняяПерестрелять соперника СредняяСтолбцы, закрывающие строки СредняяСамый длинный отрезок с наибольшим AND Средняя
загружаем Python…
Вход
start=7, shift=1
Ожидается
2

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 111 тестов на сервере, включая скрытые.