添加链接描述
结论:a0^a1^....^an==0 先手必败
否则先手必胜
证明如下:
1.0^0^0^....^0=0,最终态为0。
a0^a1^....^an==x(不为0)则从x一定能转移到0,假设让ai变成ai^x,ai^x一定小于ai,则a0^a1^..^ai^x..^an==0。
2.a0^a1^..^ai..^an==0则无论怎么取都转化为一个不为0的数。反证法,假设3.a0^a1^..^ai`..^an==0,a0^a1^..^ai..^an和a0^a1^..^ai`..^an进行异或操作,两个相同的异或变成0,则ai^ai`=0,所以ai=ai`,与原题意不符。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=3e4+5,INF=0x3f,mod=1e9+7;
int main()
{
int n,res=0;
cin>>n;
while(n--)
{
int x;
cin>>x;
res^=x;
}
if(res!=0)
cout<<"Yes"<<endl;
else cout<<"No"<<endl;
return 0;
}