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