hihocoder 1526 序列的值

题面在这里!

 

好久没做题啦,养生一下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\n",ans);
	return 0;
}

  

posted @ 2018-08-30 16:57  蒟蒻JHY  阅读(144)  评论(0编辑  收藏  举报