好久没做题啦,养生一下qwq
推一推贡献就会发现这TM就是一个水题啊!
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+5,ha=998244353;
inline int add(int x,int y){ x+=y; return x>=ha?x-ha:x;}
inline void ADD(int &x,int y){ x+=y; if(x>=ha) x-=ha;}
int n,X,Y,now,cnt[33],ans;
int main(){
scanf("%d",&n);
X=1;
for(int i=1;i<n-1;i++) X=add(X,X);
Y=n==1?1:add(X,X);
for(int i=0;i<n;i++){
scanf("%d",&now);
for(int j=30;j>=0;j--) if((1<<j)&now){
ADD(ans,cnt[j]?X:Y);
break;
}
for(int j=0;j<=30;j++) if(now&(1<<j)) cnt[j]|=1;
}
printf("%d
",ans);
return 0;
}