M. Пары без общих битов
3000 мс · 256 МБ · всё или ничего
Посчитайте количество пар индексов , для которых — то есть у чисел нет ни одного общего единичного бита.
Условие означает, что является подмаской дополнения . А количество элементов, являющихся подмаской заданной маски, — это ровно то, что считает преобразование из классной задачи I.
Решение в три шага:
- Посчитать, сколько раз встречается каждое значение: .
- Прогнать по сумму по подмаскам — получится , количество элементов, являющихся подмаской .
- Для каждого прибавить , где дополнение берётся в пределах битов.
В сумме каждая пара учтётся дважды, а элемент, равный нулю, учтёт сам себя. Поэтому ответ равен
Стоит это , где — количество битов. Перебор всех пар был бы , то есть .
Дополнение внутри битов — это ((1 << B) - 1) ^ a, а не ~a: последнее перевернёт и старшие биты, которых в задаче нет.
Формат ввода
Первая строка содержит число ().
Вторая строка — чисел ().
Формат вывода
Одно число.
Примеры
ввод
4 1 2 3 4
вывод
4
ввод
2 0 0
вывод
1
Войдите, чтобы отправлять решения.