您的位置:首页 > 其它

2147 kiki's game

2015-07-26 11:18 357 查看

kiki's game

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 40000/10000 K (Java/Others)

Total Submission(s): 8025    Accepted Submission(s): 4769

[align=left]Problem Description[/align]
Recently kiki has nothing to do. While she is bored, an idea appears in his mind, she just playes the checkerboard game.The size of the chesserboard is n*m.First of all, a coin is placed in the top right corner(1,m). Each time one
people can move the coin into the left, the underneath or the left-underneath blank space.The person who can't make a move will lose the game. kiki plays it with ZZ.The game always starts with kiki. If both play perfectly, who will win the game?

 

[align=left]Input[/align]
Input contains multiple test cases. Each line contains two integer n, m (0<n,m<=2000). The input is terminated when n=0 and m=0.

 

[align=left]Output[/align]
If kiki wins the game printf "Wonderful!", else "What a pity!".

 

[align=left]Sample Input[/align]

5 3
5 4
6 6
0 0

 

[align=left]Sample Output[/align]

What a pity!
Wonderful!
Wonderful!

题意:

两个人玩游戏,一个有横竖线的给出大小的方格区域,每个人都能向下,向左或者向左下,走一步,谁先不能走了,就谁输了(啥?硬币?反正硬币还是人推走,嘿嘿)............

两个人都非常聪明,也就是肯定走最可能赢的路径...

题解:

这个题第一感觉就是博弈论,再想想发现还是最简单的那种................

把这个题分析简化一下:

只能向下,向左或者向左下走,那么就是游戏结束一定走了 n*m 步(不懂?那就自己动手试试看为什么)

然后 n*m 是偶数,那么肯定是先走的赢,否则就是后走的赢.....

不懂?额...温习一下小学数学吧...

#include<stdio.h>
int main()
{
int n,m;
while(scanf("%d%d",&n,&m),n||m)
{
if((n*m)&1)//位运算比较快,这里完全可以换成(m*n)%2
{
printf("What a pity!\n");
}
else
{
printf("Wonderful!\n");
}
}
return 0;
}


这个题,有点水....

可以算是最简单的博弈论,这个复杂点,可以声明每个人走的步数可以是某个范围的数,比如(1~5),额....

这个不会做...............
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: