P10853 【MX-X2-T2】「Cfz Round 4」Xor Counting

题目背景

原题链接:。 --- 生きてもいいような 気がして 或者 就这样活着也不错吧 繰返し笑い合うんだ 居たくなる旅 想要有一段充满欢笑的旅程啊

题目描述

给定一个长度为 $n$ 的**非负整数**序列 $a_1, \ldots, a_n$。 请你求出满足 $a_i \le (a_i \oplus a_j) \le a_j$ 的下标对 $(i, j)$ 的数量。其中 $\oplus$ 表示**按位异或**,即 C++ 中的 `^`。

输入格式

**本题有多组测试数据。** 输入的第一行包含一个整数 $T$,表示测试数据组数。 接下来依次输入每组测试数据。对于每组测试数据: - 第一行一个整数 $n$。 - 第二行 $n$ 个整数 $a_1, \ldots, a_n$。

输出格式

对于每组测试数据,输出一行一个整数,表示满足条件的下标对 $(x,y)$ 的数量。

说明/提示

**【样例解释】** 对于第 $1$ 组测试数据,满足条件的下标对有 $(2,1),(2,2),(2,3),(2,4),(3,1),(3,4)$。 **【数据范围】** 设 $\sum n$ 表示单个测试点中 $n$ 的和。 对于所有测试数据,$1 \le T \le 1000$,$1 \le n \le 5\times10^5$,$0 \le a_i \lt 2^{30}$,$\sum n \le 5\times10^5$。 **本题采用捆绑测试。** - Subtask 1(30 points):$\sum n \le 1000$。 - Subtask 2(30 points):$a_i \ge 1$。 - Subtask 3(40 points):无特殊限制。