Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
55102 | lz | 线性基 (basis) | C++ | 通过 | 100 | 14 MS | 1040 KB | 562 | 2022-08-09 11:30:44 |
#include <bits/stdc++.h> using namespace std; const int N=2e6+5; long long n; long long a[N]; long long s[30],p[30]; long long ans=0; int main(){ scanf("%lld",&n); for(int i=1;i<=n;i++) scanf("%lld",&a[i]); p[0]=1; for(int j=1;j<=20;j++) p[j]=p[j]*2; for(int i=1;i<=n;i++){ for(int j=0;j<=20;j++){ s[j]+=a[i]%2; a[i]/=2; } } for(int i=1;i<=n;i++){ long long cnt=0; for(int j=20;j>=0;j--){ cnt=cnt*2; if(s[j]>0){ cnt++; s[j]--; } } ans+=cnt*cnt; } printf("%lld\n",ans); return 0; }