100 atcoder#ABC147D. [ABC147D] Xor Sum 4

[ABC147D] Xor Sum 4

配点 : 400400

問題文

NN 個の整数があり、ii 番目の整数は AiA_i です。

$\sum_{i=1}^{N-1}\sum_{j=i+1}^{N} (A_i \text{ XOR } A_j)$ を 109+710^9+7 で割った余りを求めてください。

$\text{ XOR }$ とは

整数 A,BA, B のビットごとの排他的論理和 a XOR ba \text{ XOR } b は、以下のように定義されます。

  • a XOR ba \text{ XOR } b を二進表記した際の 2k2^k (k0k \geq 0) の位の数は、A,BA, B を二進表記した際の 2k2^k の位の数のうち一方のみが 11 であれば 11、そうでなければ 00 である。

例えば、3 XOR 5=63 \text{ XOR } 5 = 6 となります (二進表記すると: 011 XOR 101=110011 \text{ XOR } 101 = 110)。

制約

  • 2N3×1052 \leq N \leq 3 \times 10^5
  • 0Ai<2600 \leq A_i < 2^{60}
  • 入力中のすべての値は整数である。

入力

入力は以下の形式で標準入力から与えられる。

NN

A1A_1 A2A_2 ...... ANA_N

出力

$\sum_{i=1}^{N-1}\sum_{j=i+1}^{N} (A_i \text{ XOR } A_j)$ を 109+710^9+7 で割った余りを出力せよ。

3
1 2 3
6

$(1\text{ XOR } 2)+(1\text{ XOR } 3)+(2\text{ XOR } 3)=3+2+1=6$ となります。

10
3 1 4 1 5 9 2 6 5 3
237
10
3 14 159 2653 58979 323846 2643383 27950288 419716939 9375105820
103715602

和を 109+710^9+7 で割った余りを出力してください。