由于n非常大,故状态数很多,搜索和动态规划都不行。
当n>2,
Alice 在第一步走了一枚或者两枚硬币之后,原本的圈的硬币就变成了n-1或者n-2的链。
这样只要Bob在中间位置,根据链的奇偶性,取走一或者两枚硬币,就可以把所有硬币分成长度相等的链。
这样,无论ALice怎么取,Bob都可以让石子链分成两个相同的石子链。
不断循环下去,总会在某次轮到Alice是没有硬币,也就是BOb必胜。
当n <=2,
Alice可以在第一步就取完,Alice胜。
#include <cstdio>
using namespace std;
int n;
int main()
{
while(scanf("%d",&n) && n){
if(n <= 2) puts("Alice");
else puts("Bob");
}
return 0;
}