codes и число need.
Упорядоченную пару значений (x, y) назовём **сильной**, если оба значения встречаются в codes и
popcount(x OR y) + popcount(x AND y) ≥ need,
где popcount — количество единичных битов в двоичной записи, а OR и AND — побитовые «или» и «и». Значения x и y могут совпадать: для пары (x, x) достаточно, чтобы x встретилось в массиве хотя бы раз.
Верните количество различных сильных пар. Пары (a, b) и (c, d) различны, если a ≠ c или b ≠ d; в частности, (1, 2) и (2, 1) считаются отдельно. Повторы одного значения в массиве новых пар не дают.codes=[5, 6, 1], need=4 → 4
В 5 (101) и 6 (110) по две единицы. Для (5, 6): 5 OR 6 = 111, 5 AND 6 = 100, всего 3 + 1 = 4. Подходят (5, 5), (5, 6), (6, 5) и (6, 6); любая пара с 1 даёт не больше 3.
codes=[3, 3, 8], need=3 → 3
Повторы не дают новых пар: значения только 3 и 8. Подходят (3, 3), (3, 8) и (8, 3), а у (8, 8) всего 1 + 1 = 2.
codes=[7], need=7 → 0
codes=[5, 6, 1], need=4
4
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 110 тестов на сервере, включая скрытые.