题解 P2197 【nim游戏】

· · 题解

做法

  正确做法是将所有石子求异或和, 如果异或和为零则后手必胜.否则后手必胜. 为什么这个结论是正确的呢?   

#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;

inline int read(){
    char ch=getchar();int s=0;
    while(!isdigit(ch))ch=getchar();
    while(isdigit(ch))s=s*10+ch-'0',ch=getchar();
    return s;
}

int main(){
    int T,n,m,add;
    T=read();
    while(T--){
        add=0;n=read();
        while(n--)add^=read();
        if(!add)printf("No\n");
        else printf("Yes\n");
    }
    return 0;
}