您的位置:首页 > 其它

hd2147 kiki's game

2015-07-27 15:54 232 查看

kiki'sgame

TimeLimit:5000/1000MS(Java/Others)MemoryLimit:40000/10000K(Java/Others)

TotalSubmission(s):8036AcceptedSubmission(s):4776



[align=left]ProblemDescription[/align]
Recentlykikihasnothingtodo.Whilesheisbored,anideaappearsinhismind,shejustplayesthecheckerboardgame.Thesizeofthechesserboardisn*m.Firstofall,acoinisplacedinthetoprightcorner(1,m).Eachtimeone
peoplecanmovethecoinintotheleft,theunderneathortheleft-underneathblankspace.Thepersonwhocan'tmakeamovewilllosethegame.kikiplaysitwithZZ.Thegamealwaysstartswithkiki.Ifbothplayperfectly,whowillwinthegame?

[align=left]Input[/align]
Inputcontainsmultipletestcases.Eachlinecontainstwointegern,m(0<n,m<=2000).Theinputisterminatedwhenn=0andm=0.

Output
Ifkikiwinsthegameprintf"Wonderful!",else"Whatapity!".

[align=left]SampleInput[/align]

53
54
66
00


SampleOutput

Whatapity!
Wonderful!
Wonderful!


题目大意就是给两个数n和m,代表一n*m的棋盘,kiki先下,从棋盘的右上角开始,只能往下方,左方,左下方走棋,最后谁无路可走谁输,双方都非常聪明,问在这样一个n*m的棋盘里kiki最后是输还是赢。

例如在一个5*6的棋盘里,P代表必败点,N代表必胜点,可以通往必败点的都是必胜点,只能通往必胜点的就是必败点。

PNPNPN
NNNNNN
PNPNPN
NNNNNN
PNPNPN







然后就会发现当n和m都为奇数时必败,其他情况都必胜

听说这个属于传说中的博弈哎

#include<cstdio>
intmain()
{
intn,m;
while(scanf("%d%d",&n,&m)&&(n||m))
{
if((n&1)&&(m&1))printf("Whatapity!\n");
elseprintf("Wonderful!\n");
}
return0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: