これに直接回答は、その後、2のべき乗で乗算されたときに数Nが0の数が必要とされる数で乗算された取り出した各ビットの2進数、上の各番号すべての場所がMODモジュロにこぼれても構いません。
1 の#define HAVE_STRUCT_TIMESPEC 2の#include <ビット/ STDC ++ H> 3 使用して 名前空間STDを、 4 長い 長い [ 300007 ]。 5 int型 NUM [ 300007 ] [ 67 ]。 6 長い 長い SUM0 [ 67 ]、SUM1 [ 67 ]、presolve [ 67 ]。 7 CONST 長い 長 MOD = 1E9 + 7 。 8 INT メイン(){ 9つの IOS :: sync_with_stdio(偽)。 10 cin.tie(NULL)。 11 cout.tie(NULL)。 12 INT N。 13 CIN >> N。 14 のために(INT iは= 1 ; iが<= N; ++ I) 15 CIN >> [I]。 16 のために(INT iは= 1 ; iが<= N; ++ I){ 17 長い 長い TEMP = [I]。 18 INT CNT = 0 。 19 一方(TEMP){ 20 であれば(TEMP&1 ) 21 NUM [I] [CNT] =1 ; 22 ++ CNT。 23 TEMP / = 2 。 24 } 25 } 26 長い 長い ANS = 0 。 27 のために(INT iは= 1 ; iが<= N; ++ i)が{ 28 のために(int型のk = 0 ; K <= 60 ; ++ K){ 29 であれば(NUM [I] [K] == 0 ) 30 ++ SUM0 [K]。 31 他 32 ++SUM1 [K]。 33 } 34 } 35 長い 長い X = 1 。 36 presolve [ 0 ] = 1 ; 37 のために(INT iは= 1 ; I <= 60 ; ++ I){ 38 、X * = 2 ; 39 presolve [I] = X。 40 } 41 のために(INT iが= 0 ; I <= 60 ; ++ I){ 42の ANS + =(((SUM0 [I] * SUM1 [I])%のMOD)*(presolve [I]%のMOD))%をモッズ; 43 年%= MOD。 44 } 45 COUT << 年。 46 リターン 0 ; 47 }