Ctrl K

Переключатели битов до нужного XOR

Средняя
Дан массив неотрицательных целых чисел values и число target. За один шаг можно взять любой элемент массива и переключить в его двоичной записи один бит: 0 превратить в 1 или 1 в 0. Переключать можно и старшие нули, то есть число может вырасти. Верните наименьшее число шагов, после которых XOR всех элементов массива станет равен target.
Пример 1
values=[5, 9, 2], target=7 → 2

Сейчас 5 XOR 9 XOR 2 = 14, в двоичной записи 1110, а нужно 7 = 0111. Они расходятся в двух битах, и каждый можно исправить одним переключением в любом из чисел.

Пример 2
values=[6, 6], target=0 → 0

6 XOR 6 = 0, менять ничего не нужно.

Пример 3
values=[0], target=10 → 2

У числа 10 = 1010 два единичных бита: включаем их в нуле за два шага.

Ограничения
  • 1 ≤ len(values) ≤ 10⁵
  • 0 ≤ values[i] ≤ 10⁶
  • 0 ≤ target ≤ 10⁶
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВсе наборы добавок СредняяВсе разные наборы карт СредняяЛишний среди троек СредняяДва числа без пары СредняяНайти лишнюю копию Средняя
загружаем Python…
Вход
values=[5, 9, 2], target=7
Ожидается
2

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