#7292. 1420B. B. Rock and Lever
1420B. B. Rock and Lever
1420B. B. Rock and Lever
CF1420B. Rock and Lever
时限: 1 秒 | 内存: 256 MB | 输入: 标准输入 | 输出: 标准输出
“你必须抬起大坝。用杠杆。我会把它给你。你必须用石头堵住运河。我不会把石头给你。”
Danik 急需石头和杠杆!显然,最简单的办法就是向 Hermit Lizard 要这些东西。
Hermit Lizard 同意把杠杆给 Danik。但要得到石头,Danik 需要解决如下问题。
给定一个正整数 $n$,以及一个由正整数组成的数组 $a$。任务是计算有多少对 $(i, j)$ 满足 $i < j$ 且 $a_i \& a_j \ge a_i \oplus a_j$,其中 $\&$ 表示按位与运算,$\oplus$ 表示按位异或运算。
Danik 已经解决了这个问题。但你能解决吗?
输入格式
每个测试点包含多组测试数据。
第一行包含一个正整数 $t$($1 \le t \le 10$),表示测试用例的组数。接下来是每组测试用例的描述。
每组测试用例的第一行包含一个正整数 $n$($1 \le n \le 10^5$),表示数组的长度。
第二行包含 $n$ 个正整数 $a_i$($1 \le a_i \le 10^9$),表示数组的元素。
保证所有测试用例中 $n$ 的总和不超过 $10^5$。
输出格式
对于每组测试用例,输出一个非负整数,表示满足条件的数对数量。
样例输入 1
5 5 1 4 3 7 10 3 1 1 1 4 6 2 5 3 2 2 4 1 1
样例输出 1
1 3 2 0 0
提示
在第一个测试用例中,只有一对 $(4,7)$ 满足条件:$4 \& 7 = 4$,$4 \oplus 7 = 3$。
在第二个测试用例中,所有的数对都满足条件。
在第三个测试用例中,有两对满足条件:$(6,5)$ 和 $(2,3)$。
在第四个测试用例中,没有满足条件的数对。