题目
思路
显然Nim博弈模型,当且仅当
n
1
x
o
r
n
2
x
o
r
n
3
x
o
r
…
x
o
r
n
k
=
x
≠
0
n_1 ~xor ~n_2~xor ~n_3~xor …xor~n_k=x≠0
n1 xor n2 xor n3 xor…xor nk=x=0时有解。
而有解时必然有
n
k
x
o
r
x
<
x
n_kxor~x<x
nkxor x<x,我们就取它
code:
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<iomanip>
using namespace std;
int z,n,x[500001];
int main()
{
cin>>n;
for (int j=1;j<=n;j++)
{
cin>>x[j];
if (j==1) z=x[j];
else z^=x[j];
}
if (z)
{
for (int j=1;j<=n;j++)
{
if ((x[j]^z)<x[j])
{
cout<<x[j]-(x[j]^z)<<' '<<j<<endl;
x[j]=(x[j]^z);
break;
}
}
for (int j=1;j<=n;j++)
{
cout<<x[j]<<' ';
}
}
else cout<<"lose"<<endl;
return 0;
}