HDU 1564 Play a game && HDU 2147 kiki's game
Posted kongbursi-2292702937
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1564 Play a game && HDU 2147 kiki's game相关的知识,希望对你有一定的参考价值。
HDU 1564 Play a game题意:
棋盘的大小是n*n。一块石头被放在一个角落的广场上。他们交替进行,8600人先走。每次,玩家可以将石头水平或垂直移动到一个未访问的邻居广场。谁不采取行动,谁就会输掉这场比赛。如果双方都打得很好,谁将赢得比赛?
题解:
三角形代表起始位置,虽然不是右上角但是解题都差不多
如果n为偶数,那么所有格子可以被2*1的砖块覆盖掉。
这样先手每次都移动到当前1*2的另外一块。先手必赢。
如果n为奇数。出了起始那个店,其余点都可以被覆盖。
代码:
1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 #include <cstring> 5 #define MAXN 5005 6 using namespace std; 7 int main() 8 9 int n; 10 while(~scanf("%d",&n)&&n) 11 12 if(n%2==0) 13 printf("8600\\n"); 14 else 15 printf("ailyanlu\\n"); 16 17 return 0; 18
题意:
棋盘的尺寸是n*m。首先,把一枚硬币放在右上角(1,m)。每次一个人可以把硬币移到左边,下面或者左边下面的空格里。不能采取行动的人将会输掉比赛。
先手赢了打印出Wonderful!,输了打印另一个
题解:
打个表就可以看出来,长或者宽只要有一个为偶数,那么就必胜
1 #include <cstdio> 2 3 #include <cstdlib> 4 5 #include <cstring> 6 7 #include <algorithm> 8 9 10 11 using namespace std; 12 13 14 15 int main() 16 int n,m; 17 18 while(scanf("%d %d",&n,&m)!=EOF) 19 20 if(n==0 && m==0)break; 21 22 if(n%2==0 || m%2==0) 23 24 printf("Wonderful!\\n"); 25 26 else 27 28 printf("What a pity!\\n"); 29 30 31 32 33 34 return 0; 35 36
以上是关于HDU 1564 Play a game && HDU 2147 kiki's game的主要内容,如果未能解决你的问题,请参考以下文章