Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
55112 | 112 | 线性基 (basis) | C++ | 解答错误 | 0 | 39 MS | 1048 KB | 641 | 2022-08-09 11:31:53 |
#include<bits/stdc++.h> using namespace std; typedef unsigned long long ll; ll t,a[200001],ans; ll cmp(ll a,ll b) { return a>b; } void f(ll &a,ll &b) { ll t=a; a=a&b; b=t|b; } inline ll qp(ll a,ll b) { ll ans=1; while(b) { if(b&1) ans*=a; a*=a; b>>=1; } return ans; } int main() { cin>>t; for(int i=0;i<t;i++) cin>>a[i]; if(t==1) cout<<qp(a[0],2)<<endl,exit(0); if(t==2){ f(a[0],a[1]); cout<<qp(a[0],2)+qp(a[1],2)<<endl,exit(0); } sort(a,a+t,cmp); for(ll i=0;i<t;i++) f(a[i],a[i+1]); for(ll i=0;i<=t;i++) ans+=qp(a[i],2); cout<<ans<<endl; return 0; }