为什么子任务三中的两个点输出了负数qwq
#include<iostream>
using namespace std;
#define int long long
const int P=0x100000000;
inline int read(){
int r=0,i=getchar();
while(i<'0'||i>'9')i=getchar();
while(i>='0'&&i<='9')r=(r<<1)+(r<<3)+(i^48),i=getchar();
return r;
}
int a0[50],a1[50],n,ans;
void init(){
cin>>n;
for(int i=0;i<40;i++)a0[i]=n;
for(int i=1;i<=n;i++){
int k=read();
for(int j=0;k;k>>=1,j++)a0[j]-=k&1,a1[j]+=(k&1);
}
}
inline int f(int x,int y){
while(y)x=x*2%P,y--;
return x;
}
signed main(){
cout<<P;
init();
for(int i=0;i<=40;i++){
if(!a0[i]||!a1[i])continue;
int p10=a0[i]*a0[i]%P;
int p11=(a1[i]*a1[i]%P+2*a1[i]*a0[i]%P)%P;
int p20=(a0[i]*a0[i]%P+2*a1[i]*a0[i]%P)%P;
int p21=a1[i]*a1[i]%P;
ans=(ans+f(p10*p21%P+p11*p20%P,i))%P;
}
cout<<ans;
return 0;
}