Ctrl K

Сумма различий в битах

Средняя
Для двух неотрицательных чисел назовём *различием* количество позиций в двоичной записи, где у них стоят разные биты. Например, у 4 (100) и 7 (111) различие равно 2. Дан массив values. Верните сумму различий по всем парам элементов — каждую неупорядоченную пару разных позиций считаем один раз. Перебор всех пар — это O(n²); попробуйте быстрее.
Пример 1
values=[5, 3, 6] → 6

5 = 101, 3 = 011, 6 = 110. Пары: 5 и 3 различаются в 2 битах, 5 и 6 — в 2, 3 и 6 — в 2. Итого 6.

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

Две восьмёрки совпадают (0), а каждая из них отличается от нуля одним битом: 0 + 1 + 1 = 2.

Пример 3
values=[7] → 0
Ограничения
  • 1 ≤ len(values) ≤ 10⁴
  • 0 ≤ values[i] ≤ 10⁹
  • Ответ меньше 2³¹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВосемь фонарей через много ночей СредняяРазрез на равные по XOR половины СредняяБери из любой кучки СредняяПогасить табло переключением рядов СредняяМеньше всего прямых через точки Средняя
загружаем Python…
Вход
values=[5, 3, 6]
Ожидается
6

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