题意:
棋的初始点是(1,m),即右上角。
下棋者只能往左边(left),左下面(left-underneath),下面(underneath),这三个方格下棋。
解题思路:
只要画出NP图就可以发现规律了。。。
N:必胜点(如果左边,左下角,下角有一个P点,那么这个点就是N点)
P:必败点(如果左边,左下角,下角全都是N点,那么这个点就是P点)
最后棋子一定到达(n,m)这个点,所以我们从这个点开始画。
图:
NNNNNNNNNNNNNNNNNN
PNPNPNPNPNPNPNPNPN
NNNNNNNNNNNNNNNNNN
PNPNPNPNPNPNPNPNPN
NNNNNNNNNNNNNNNNNN
PNPNPNPNPNPNPNPNPN
NNNNNNNNNNNNNNNNNN
PNPNPNPNPNPNPNPNPN
NNNNNNNNNNNNNNNNNN
PNPNPNPNPNPNPNPNPN
NNNNNNNNNNNNNNNNNN
PNPNPNPNPNPNPNPNPN
发现规律了吧。
代码:
#include<iostream>
using namespace std;
int main(void)
{
int n,m;
while(scanf("%d%d",&n,&m),n||m)
{
if(!(m&1))
{
cout<<"Wonderful!"<<endl;
}
else
{
if(!(n&1))
cout<<"Wonderful!"<<endl;
else
cout<<"What a pity!"<<endl;
}
}
return 0;
} |