HDU-2176 取(m堆)石子游戏
取(m堆)石子游戏
尼姆博弈
同 HDU-1850,我的题解: https://www.cnblogs.com/dgsvygd/p/16270024.html
#include <iostream>
using namespace std;
const int maxn = 2e5 + 10;
int num[maxn];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
while(cin >> n && n)
{
for(int i=0; i<n; i++) cin >> num[i];
int sum = 0;
for(int i=0; i<n; i++) sum ^= num[i];
if(sum == 0) cout << "No" << endl;
else
{
cout << "Yes" << endl;
for(int i=0; i<n; i++)
{
int x = sum ^ num[i];
if(num[i] <= x) continue;
cout << num[i] << " " << x << endl;
}
}
}
return 0;
}