QOJ.ac

QOJ

Time Limit: 20 s Memory Limit: 512 MB Total points: 100

#858. НОД vs. XOR

Statistics

Оптимизация — это весело! Особенно когда она не совсем обязательна.

Все знают, что побитовые операции (например, побитовое исключающее ИЛИ, XOR) быстрее, чем рекурсивные функции (такие как наибольший общий делитель, НОД). Чтобы впечатлить своих руководителей на стажировке, вы заменили в флагманском проекте компании все вызовы $gcd(x, y)$ на гораздо более быстрые $xor(x, y)$.

Это было вчера, в пятницу. Теперь вы начинаете задумываться, стоило ли тестировать ваш новый код перед внедрением в производство... Что ж, лучше поздно, чем никогда. Дана последовательность чисел $a_1, \dots, a_n$. Определите, сколько пар $(i, j)$ ($1 \le i < j \le n$) на самом деле удовлетворяют условию $gcd(a_i, a_j) = xor(a_i, a_j)$. Напомним, что $gcd(x, y)$ обозначает наибольший общий делитель $x$ и $y$, а $xor(x, y)$ — это операция побитового исключающего ИЛИ над $x$ и $y$.

Входные данные

Первая строка входных данных содержит количество тестов $z$ ($1 \le z \le 20$). Далее следуют описания тестов.

Первая строка каждого теста содержит целое число $n$ ($1 \le n \le 2\,000\,000$). Вторая строка содержит целые числа $a_1, a_2, \dots, a_n$, все они положительные и не превышают $1\,000\,000$.

Суммарная длина всех последовательностей во всех тестах не превышает $3 \cdot 10^7$.

Выходные данные

Для каждого теста выведите одно целое число: количество пар $(i, j)$ таких, что $i < j$ и $gcd(a_i, a_j) = xor(a_i, a_j)$.

Примеры

Входные данные 1

1
4
2 3 4 3

Выходные данные 1

2

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.