Ctrl K

Обнулить разряды по строгим правилам

Сложная
Дано неотрицательное целое число value. Его нужно превратить в 0, меняя по одному биту двоичной записи за шаг. Разрешены только два вида шагов: - поменять младший бит (бит 0) — это можно всегда; - поменять бит i (при i ≥ 1), но только если бит i - 1 равен 1, а все биты ниже него (i - 2, ..., 0) равны 0. Верните наименьшее число шагов.
Пример 1
value=2 → 3

10 → 11 (младший разряд можно менять всегда) → 01 (разряд 1 меняем, потому что разряд 0 равен 1) → 00. Три шага.

Пример 2
value=5 → 6

Кратчайший путь: 101 → 111 → 110 → 010 → 011 → 001 → 000, то есть 6 шагов.

Пример 3
value=0 → 0
Ограничения
  • 0 ≤ value ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиТихие и общительные жильцы СложнаяСвежие булочки для каждой компании СложнаяСбор монет: пошлина или половина СложнаяКузнечик на бесконечной лестнице СложнаяСпуск до единицы Средняя
загружаем Python…
Вход
value=2
Ожидается
3

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