1. 程式人生 > >博弈論入門題 kiki's game

博弈論入門題 kiki's game

unsigned str ram right scan logs sel include otto

Problem Description 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?

Input 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.

Output If kiki wins the game printf "Wonderful!", else "What a pity!".

Sample Input 5 3 5 4 6 6 0 0

Sample Output What a pity! Wonderful! Wonderful!

Author 月野兔

Source HDU 2007-11 Programming Contest

Recommend 威士忌 | We have carefully selected several similar problems for you: 1846 1847 1848 1849 1517 顯然(1,1)是必敗態,因為沒有操作可以選擇 那麽由必勝態的定義(一步之內能走到必敗態的狀態叫必勝態)(1,2),(2,2),(2,1)都是必勝態 依次類推可以打一個表出來(必敗態:下一步無論怎樣轉移都會轉移到必勝態) 找規律 n,m都是奇數的時候會輸!
#include<iostream>
#include
<cstdio> #include<cmath> #include<cstring> #include<sstream> #include<algorithm> #include<queue> #include<deque> #include<iomanip> #include<vector> #include<cmath> #include<map> #include<stack> #include<set> #include<functional> #include<fstream> #include<memory> #include<list> #include<string> using namespace std; typedef long long LL; typedef unsigned long long ULL; #define N 100 #define MAXN 20000 + 9 #define INF 1000000009 #define eps 0.00000001 #define sf(a) scanf("%d",&a) int n; int a[N]; int main() { while (sf(n), n) { int sum = 0; for (int i = 0; i < n; i++) sf(a[i]), sum ^= a[i]; if (sum == 0) cout << 0 << endl; else { int ans = 0; for (int i = 0; i < n; i++) { if ((sum^a[i]) < a[i]) ans++; } cout << ans << endl; } } }

博弈論入門題 kiki's game