尼姆博弈
尼姆博弈(Nimm Game):
尼姆博弈指的是这样一个博弈游戏:有任意堆物品,每堆物品的个数是任意的,双方轮流从中取物品,每一次只能从一堆物品中取部分或全部物品,最少取一件,取到最后一件物品的人获胜。
结论就是:把每堆物品数全部异或起来,如果得到的值为0,那么先手必败,否则先手必胜。
1 #include <cstdio> 2 #include <cmath> 3 #include <iostream> 4 using namespace std; 5 int main() 6 { 7 int n,ans,temp; 8 while(cin>>n) 9 { 10 temp=0; 11 for(int i=0;i<n;i++) 12 { 13 cin>>ans; 14 temp^=ans; 15 } 16 if(temp==0) cout<<"后手必胜"<<endl; 17 else cout<<"先手必胜"<<endl; 18 } 19 return 0; 20 }