题目来源:BZOJ 2463
美妙的证明:
当时一开始看到这个题时,下意识感觉这题肯定和奇偶性有关,但是想了半天也没发现什么规律,于是上网搜题解...
对于偶数的棋盘,一定可以被1*2的矩形覆盖,于是先手必胜,因为先手可以看作是从矩形的前一端移到后一端,而后手则要从后一端移动到一个新矩形的前一端,这样先手每一次都有路径可走,即移动到矩形的下一端。而对于奇数的棋盘,当先手从左上角移动一步后,剩余的棋盘又可以被1*2的矩形覆盖,则按照前面的分析可等效为先后手对调,因此后手必胜。知道了这个道理后,代码就很简单了。
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n)&&n!=0)
{
printf("%s\n",(n&1)==1?"Bob":"Alice");
}
return 0;
}