hiho week 211 register

Ended

Participants:209

Verdict:Accepted
Score:100 / 100
Submitted:2018-07-19 08:27:10

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    #include <stdio.h>
    typedef long long ll; 
     
    const int maxn=100005;
    int a[maxn];
    ll num[31][2];//num[i][0]ni0num[i][1]ni1
     
    void solve(){
        int n;
        scanf("%d",&n);
        for(int i=0;i<n;i++) scanf("%d",&a[i]);
        for(int i=0;i<31;i++) for(int j=0;j<2;j++) num[i][j]=0; // 
        for(int i=0;i<n;i++){
            for(int j=0;j<31;j++){
                if(a[i]&(1<<j)) num[j][1]++;//ij
                else num[j][0]++;
            }
        }
        ll sum=0;
        for(int i=0;i<31;i++) sum+=num[i][0]*num[i][1]; // num[i][0]*num[i][1]i使Hamming Distance+1 
        printf("%lld",sum);
    }
     
     
    int main(){
        solve();
        return 0;
    }
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX