题目链接:http://poj.org/problem?id=2484
题意:Alice和Bob玩游戏,从一堆圆环形排列的硬币中拿硬币,每次可以拿一个或者两个,但必须拿连续的(两个中间有空位也视为不连续),Alice先手,给定硬币个数,问谁赢。
题解:
当n=1或者n=2时,Alice可以一下子取走所有的硬币,获胜。
当n>=3时,Alice不管取多少硬币,她会把原来的圆环搞出一个缺口,这样就变成了一条链,而此时Bob如果把这条链分成两条长度相等的链(如果Alice取完后剩奇数个硬币,Bob就去最中间的那个,若是偶数,则取最中间的两个)。当Bob取完使两条链长度相同时,以后的每次操作,Bob只需跟着Alice的取法在另一条链里取即可。这样始终是Bob取完最后的硬币,Alice输。
#include <cstdio>
int main(){
int n;
while(scanf("%d", &n), n){
if(n <= 2)
printf("Alice
");
else
printf("Bob
");
}
return 0;
}