CF1420B.Rock and Lever

普及-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

"You must lift the dam. With a lever. I will give it to you.

You must block the canal. With a rock. I will not give the rock to you."

Danik urgently needs rock and lever! Obviously, the easiest way to get these things is to ask Hermit Lizard for them.

Hermit Lizard agreed to give Danik the lever. But to get a stone, Danik needs to solve the following task.

You are given a positive integer nn, and an array aa of positive integers. The task is to calculate the number of such pairs (i,j)(i,j) that i<ji \lt j and aia_i &\& aj≥ai⊕aja_j \ge a_i \oplus a_j, where &\& denotes the bitwise AND operation, and ⊕\oplus denotes the bitwise XOR operation.

Danik has solved this task. But can you solve it?

你必须抬起水坝。使用一根杠杆。我会把它交给你。

你必须堵住运河。用一块石头。我不会把石头交给你。

丹尼克急需石头和杠杆!显然,获得这些东西最简单的方法是向隐士蜥蜴求助。

隐士蜥蜴同意将杠杆交给丹尼克。但要获得石头,丹尼克需要解决以下问题。

给定一个正整数 nn 和一个由正整数组成的数组 aa。任务是计算满足 i<ji \lt j 且 aia_i &\& aj≥ai⊕aja_j \ge a_i \oplus a_j 的数对 (i,j)(i,j) 的个数,其中 &\& 表示按位与运算,⊕\oplus 表示按位异或运算。

丹尼克已经解决了这个问题。但你能解决它吗?

输入格式

Each test contains multiple test cases.

The first line contains one positive integer tt (1≤t≤101 \le t \le 10) denoting the number of test cases. Description of the test cases follows.

The first line of each test case contains one positive integer nn (1≤n≤1051 \le n \le 10^5) — length of the array.

The second line contains nn positive integers aia_i (1≤ai≤1091 \le a_i \le 10^9) — elements of the array.

It is guaranteed that the sum of nn over all test cases does not exceed 10510^5.

每个测试包含多个测试用例。

第一行包含一个正整数 tt(1≤t≤101 \le t \le 10),表示测试用例的数量。随后是各测试用例的描述。

每个测试用例的第一行包含一个正整数 nn(1≤n≤1051 \le n \le 10^5)—— 数组的长度。

第二行包含 nn 个正整数 aia_i(1≤ai≤1091 \le a_i \le 10^9)—— 数组的元素。

保证所有测试用例的 nn 之和不超过 10510^5。

输出格式

For every test case print one non-negative integer — the answer to the problem.

对于每个测试用例,输出一个非负整数——即该问题的答案。

输入输出样例

  • 输入#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

说明/提示

In the first test case there is only one pair: (4,7)(4,7): for it 44 &\& 7=47 = 4, and 4⊕7=34 \oplus 7 = 3.

In the second test case all pairs are good.

In the third test case there are two pairs: (6,5)(6,5) and (2,3)(2,3).

In the fourth test case there are no good pairs.

在第一个测试用例中,只有一对数:(4,7)(4,7):对于该对,44 &\& 7=47 = 4,且 4⊕7=34 \oplus 7 = 3。

在第二个测试用例中,所有数对都是“好”的。

在第三个测试用例中,有两对数:(6,5)(6,5) 和 (2,3)(2,3)。

在第四个测试用例中,不存在“好”的数对。

输入解题思路,AI测评打分。不知道怎么写?

首页