题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2147
题目大意:给你一个n*m的棋盘,初始位置为(1,m),两人轮流操作,每次只能向下,左,左下这三个方向移动,谁最后无法移动棋子就输掉比赛,问先手是否会获胜。
解题思路:简单题,P/N分析找规律,以(n,m)点为结束点推到起始点,如图:
发现每个田字格的状态都是一样的,因为(n,m)点一定时P态,所以可以得出规律:只有当(m%2==1&&n%2==1)时,先手才会输。
代码:
#include<cstdio> int main(){
int n,m;
while(~scanf("%d%d",&m,&n)&&(m||n)){
if(m%==&&n%==)
puts("What a pity!");
else
puts("Wonderful!");
}
}