[bzoj2463]谁能赢呢?

好神啊。。

将一堆1*2的骨牌放到这个n*n的棋盘上,可以发现如果骨牌正好放满的话先手一定会胜利的,因为先手每一次都将棋子从骨牌的一个开始处推到结束处,那么由于骨牌正好放满,也就是说推完最后一步后没有骨牌了。(如果骨牌恰巧放满,那么n就是偶数)

反之,如果不能放满骨牌,那么先手一定是将骨牌从一个单块推到了一个骨牌的开始处,之后后手的人就成了上一种情况的先手,也就是后手必胜了。

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <cstdlib>
 6 #include <map>
 7 #include <string>
 8 #include <vector>
 9 #include <stack>
10 #include <cmath>
11 #include <queue>
12 using namespace std;
13 
14 int main(){
15     int n;
16     while(scanf("%d",&n)==1&&n)if(n&1)puts("Bob");else puts("Alice");
17 }
View Code

 

posted @ 2017-01-01 14:43  KingSann  阅读(69)  评论(0编辑  收藏  举报