数位拆分

提交数: 4, 通过率: 100%, 平均分: 100

题目描述:

给定一个长度为 n 的整数数列 a,其中 ai  表示数列中第 i 个元素的值。你需要计算以下表达式的值:

\( \sum_{i=1}^{n}\sum_{j=1}^{n} (a_i \bigoplus a_j) \)

其中,⨁ 表示按位异或运算。

请注意, \(  \sum_{i=1}^{n}\sum_{j=1}^{n} (a_i \bigoplus a_j) \) 实际上是对数列中所有元素两两进行异或运算,并将结果求和。

输入格式:

第一行包含一个整数 n(1≤n≤1e5 ),表示数列的长度。

第二行包含 n 个整数 ai(0≤ai ≤1e9 ),每个整数之间用空格分隔。

输出格式:

输出一个整数,表示表达式的计算结果。

数据范围:

样例1解释
对于给定的示例输入,数组 a=[1,2,3]。我们需要计算以下表达式的值:

(1⨁1)+(1⨁2)+(1⨁3)+(2⨁1)+(2⨁2)+(2⨁3)+(3⨁1)+(3⨁2)+(3⨁3)
计算过程如下:

0+3+2+3+0+1+2+1+0=12

因此,输出为 12。

测试点 1−10 满足 1≤n≤1e3,0≤ai ≤1e6。

测试点11−20 满足1≤n≤1e5,0≤ai ≤1e9。

样例输入:

3
1 2 3

样例输出:

12
时间限制: 1000ms
空间限制: 256MB