题意:n个相同的棋子围成一个圆,Alice Bob两人从甲开始轮流取棋子,每次可以取走一个或者两个初始位置相邻的棋子,首先取走所有棋子的人胜利。
题解:n<=2的时Alice必胜;
n == 3时Bob必胜;
n > 3时Alice一次取不完,这样所有的棋子就变成一条链,Bob取之后一定能将棋子分成两份相等的棋子,之后Bob与Alice操作相同即可,所以Bob必胜。
Sure原创,转载请注明出处。
#include <iostream> #include <cstdio> using namespace std; int n; int main() { while(scanf("%d",&n) && n) { puts(n <= 2 ? "Alice" : "Bob"); } return 0; }