每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度。
Nim游戏多了一个决策:拿出一些石堆
显然只要给对方构造异或和为0的子集就行了
暴枚子集...
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; const int N=15; inline int read(){ char c=getchar();int x=0,f=1; while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} return x*f; } int n,a[N]; bool solve(){ int All=1<<n; for(int s=1;s<All;s++){ int sg=0; for(int i=0;i<n;i++) if((1<<i)&s) sg^=a[i]; if(!sg) return true; } return false; } int main(){ //freopen("in","r",stdin); int T=10; while(T--){ n=read(); for(int i=0;i<n;i++) a[i]=read(); puts(solve() ? "NO" : "YES"); } }