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):无特殊限制。