Ctrl K

Погасить лишние биты

Лёгкая
Даны два положительных числа start и target. За один ход можно взять любой бит двоичной записи start, равный 1, и сделать его нулём. Превращать 0 в 1 нельзя. Верните наименьшее число ходов, после которых start станет равно target, или -1, если этого добиться невозможно.
Пример 1
start=29, target=9 → 2

29 = 11101₂, 9 = 01001₂. Гасим две единицы (в разрядах 4 и 2) — получается 9.

Пример 2
start=6, target=5 → -1

6 = 110₂, 5 = 101₂. В младшем разряде у 5 стоит единица, а у 6 — ноль; включать биты нельзя, ответ -1.

Пример 3
start=40, target=40 → 0
Ограничения
  • 1 ≤ start, target ≤ 10⁶
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСумма двоичных строк ЛёгкаяЧисло без пары ЛёгкаяБиты задом наперёд ЛёгкаяСколько единиц в числе ЛёгкаяРазмер плотного дерева Лёгкая
загружаем Python…
Вход
start=29, target=9
Ожидается
2

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