初心者コンテスト147D Atcoder

これに直接回答は、その後、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 }

おすすめ

転載: www.cnblogs.com/ldudxy/p/12076864.html