sincerit 2147 kiki的游戏(简单博弈论)

2147 kiki的游戏
时间限制:5000/1000 MS(Java / Others)内存限制:40000/10000 K(Java / Others)
总提交内容:13657接受提交内容:8344

问题描述
最近kiki无事可做。虽然她很无聊,但他脑子里出现了一个想法,她只是玩棋盘游戏。主板的大小是n * m。首先,硬币放在右上角(1,m)。每次一个人可以将硬币移动到左侧,下方或左下方的空白区域。无法移动的人将失去游戏。kiki与ZZ一起玩。游戏总是以kiki开头。如果两者都能完美发挥,谁将赢得比赛?

输入
输入包含多个测试用例。每行包含两个整数n,m(0 <n,m <= 2000)。当n = 0且m = 0时,输入终止。
产量
如果kiki赢得游戏printf“精彩!”,否则“真可惜!”。
样本输入
5 3
5 4
6 6
0 0
样本输出
What a pity!
Wonderful!
Wonderful!

题目可以枚举小的规模找规律 1 * 1 , 1 * 2, 1 * 3, 2 * 1, 2 * 2 , 2 * 3 …
依次递推可以得出各个规模的胜败情况:
PNPNPNPNP
NNNNNNNNN
PNPNPNPNP
NNNNNNNNN
PNPNPNPNP
NNNNNNNNN
PNPNPNPNP
每一个的点根据n * m的奇偶判断胜败,n*m为奇数则必败,为偶数必胜

#include <iostream>
#include <stdio.h>
#include <cstring>
#include <algorithm>
using namespace std;
int main() {
  int n, m;
  while (cin >> n >> m, n||m) {
    if ((n*m) % 2 == 0) cout << "Wonderful!\n";
    else cout << "What a pity!\n";
  }
  return 0;
}

猜你喜欢

转载自blog.csdn.net/sincerit/article/details/83542519