1. 程式人生 > >sincerit 2147 kiki的遊戲(簡單博弈論)

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; }