记录编号 514518 评测结果 AAAAA
题目名称 Nim游戏! 最终得分 100
用户昵称 GravatarDeacep 是否通过 通过
代码语言 C++ 运行时间 0.146 s
提交时间 2018-10-16 19:18:04 内存使用 0.31 MiB
显示代码纯文本
    #include<bits/stdc++.h>
    using namespace std;
    const int fo[14]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192};
    struct TOF{
    	TOF(){
    		memset(to,0,sizeof(to));
    	}
    	bool to[14];
    };
    void decompose(int ST,TOF &p){//二进制分解 
    	register int poi=13;
    	while(ST){//条件的问题 
    		if(ST-fo[poi]>=0){
    		p.to[poi]=true;
    		ST-=fo[poi];}
    		--poi;
    	}
    }
    bool verdict(TOF d[],int n){//胜负判断 
    	register bool f[14];
    	memset(f,0,sizeof(f));
    	for(int i=0;i<n;i++){
    		for(int k=0;k<=13;k++){
    			if(d[i].to[k]==1)
    			f[k]=!f[k];
    		}
    	}
    	register int sum=0;
    	for(int i=0;i<=13;i++)
    	if(f[i]!=false)
    	++sum;
    	if(sum!=0)
    	return true;
    	return false;
    }
    void work(){
    	register int n,stone;
    	cin>>n;TOF a[n+1];
    	for(int i=0;i<n;i++){
    		cin>>stone;
    		decompose(stone,a[i]);
    	}
    	if(verdict(a,n)){
    		cout<<"Yes"<<endl;
    	}
    	else
    	cout<<"No"<<endl;
    }
    int main(){
    	freopen("nim!.in","r",stdin);
    	freopen("nim!.out","w",stdout);
    	register int t;
    	cin>>t;
    	for(int i=0;i<t;i++)
    	work();
    }