1079 - 棋盘游戏

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

小明和小红在玩一种棋盘游戏,棋盘的尺寸为n个方格*m个方格。一开始在棋盘的右上角(1,m)放一枚硬币,每次一个人可以将硬币向左、下或左下的方格移动。
当某个人无法再移动硬币了,那么这个人就输了。游戏总是小明先开始,如果他们两个每步都是最优策略,则谁将赢得游戏?

题目输入

输入包含多组测试数据。每组输入两个整数n和m(0<n,m<=2000)。
当n=m=0时,输入结束。

题目输出

对于每组输入,如果小明赢,输出“Wonderful!”,否则输出“What a pity!”。

输入/输出样例

输入格式

5 3
5 4
6 6
0 0

输出格式

What a pity!
Wonderful!
Wonderful!

C语言解答

#include<stdio.h>

int main()
{
	int n,m;
	while(scanf("%d%d",&n,&m)!=EOF,n||m)
	{
		n%=2;
		m%=2;
		if(n&&m)
			printf("What a pity!\n");
		else
			printf("Wonderful!\n");
	}
	return 0;
}

C++解答

#include<stdio.h>

int main()
{
	int n,m;
	while(scanf("%d%d",&n,&m)!=EOF,n||m)
	{
		n%=2;
		m%=2;
		if(n&&m)
			printf("What a pity!\n");
		else
			printf("Wonderful!\n");
	}
	return 0;
}

Java解答

import java.util.*;

public class Main{	
	static void chessboard(int n,int m){
		n %= 2;
	    m %= 2;
	    if(m == 1 && n == 1)
	    	System.out.println("What a pity!");      
	    else
	    	System.out.println("Wonderful!");
	}
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		while(n != 0 && m != 0) {
			chessboard(n, m);
			n = sc.nextInt();
			m = sc.nextInt();
		}			
				
	}
	
}