好久没做题啦,养生一下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; }