题目
给定一个
n
个石子的环,石子编号为
每次可以进行这样两个操作中的一个:
①取一颗石子;
②取相邻编号的石子;
谁先取完谁胜.
1≤n≤106
分析
首先要读懂题意.
应该是找规律,从小数据开始分析.
当
n=1
时,Alice.
当
n=2
时,Alice.
当
n≥3
时,
情况一:当
n
为偶数时,Alice怎么取,Bob就中心对称地取,必然是Bob胜.
情况二:当
当Alice取奇数颗时,Bob取偶数颗,使得刚好分割成两块相同的,回归到情况一.
当Alice取偶数颗时,Bob取奇数颗,使得刚好分割成两块相同的,回归到情况一.
综上所述,当
n≥3
时,Bob必胜.
于是这就是一道无脑的水题了.
代码
#include <cstdio>
#include <cctype>
int n;
inline int read(void)
{
int x=0; char c=getchar();
for (;!isdigit(c);c=getchar());
for (;isdigit(c);c=getchar()) x=x*10+c-'0';
return x;
}
int main(void)
{
for (;;)
{
if (!(n=read())) break;
printf("%s\n",n<3?"Alice":"Bob");
}
return 0;
}