给定 N 堆物品,第 i 堆物品有 A i 个。两名玩家轮流行动,每次可以任选一堆,取走任意多个物品,可把一堆取光,但不能不取。取走最后一件物品者获胜。两人都采取最优策略,问先手是否必胜.
我们把这种游戏称为 Nim 博弈。把游戏过程中面临的状态称为局面。整局游戏第一个行动的称为先手,第二个行动的称为后手。若在某一局面下无论采取何种行动,都会输掉游戏,则称该局面必败。
我们只需要证明 a1⊕a2⊕ . . . ⊕ a n ≠ 0 是先手必胜状态,a1⊕a2⊕ . . . ⊕ an =0先手必败状态。
hdu 1849
#include"bits/stdc++.h"
using namespace std;
int t,x,y;
int main()
{
while(cin >> t && t)
{
cin >> x;
for(int i=1;i<t;i++)
{
cin >> y;
x = x^y;
}
if(x) puts("Rabbit Win!");
else puts("Grass Win!");
}
return 0;
}