标签:pac 技术分享 alice 部分 name splay can 规则 ios
题目大意:
Alice和Bob决定玩一个游戏。游戏的规则如下:现在有N个硬币(1<=n<=10^6),将它们摆成一个圈。操作:每次Alice或Bob从这圈硬币中,取一个或两个初始相邻的硬币,取最后一个硬币的人胜利。
注意:1.当n>3的时候,假设Alice拿走了标号为2的硬币,那么标号1的硬币和标号为3的硬币是彼此不相邻的。2.Alice和Bob都是足够聪明的小朋友。
解法:
后手必胜如果是N为偶数,后手可以跟着先手同步操作。相当于全部硬币分为相等的两部分,先手取几个,后手就取几个,这样总有后手必胜。
如果N是奇数,先手拿一个的时候,后手就将其中心对称的两个拿掉。先手拿两个的时候,后手就将其中心对称的一个拿掉。进行以上二选一的操作后,游戏便又成了N为偶数的情况。
综上所述,除了N=1或N=2时,总有后手Bob胜出。
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int main() 5 { 6 int n; 7 while(scanf("%d",&n)!=EOF) 8 { 9 if(n==0)break; 10 if(n==1||n==2) 11 cout<<"Alice"<<endl; 12 else 13 cout<<"Bob"<<endl; 14 } 15 return 0; 16 }
标签:pac 技术分享 alice 部分 name splay can 规则 ios
原文地址:http://www.cnblogs.com/Beckinsale/p/7406064.html