【发布时间】:2014-01-22 10:49:17
【问题描述】:
Ramesh 和 Suresh 分别在彩票中得到一个装满五颗星的盒子。自从 两个盒子不需要有相同数量的巧克力,它们 决定玩游戏。获胜者将获得两盒 巧克力。他们交替进行,Suresh 开始比赛。给定 两个盒子里的巧克力数量,让它们分别是 c1 和 c2, 玩家拿走 c1 或 c2 数量的巧克力,然后除以 剩下的一盒巧克力到两盒(这两盒不需要 有相同数量的巧克力)。无法做出这样的玩家 动输。输入
输入的第一行包含一个数字 T(1
(1
输出为每个测试用例打印“Ramesh”或“Suresh”,具体取决于谁 是赢家。
输入:2 3 1 4 5
输出:拉梅什·苏雷什
这是我的尝试,它给了我错误的答案。也给我一些测试用例。
#include<stdio.h>
int main()
{
int t,c1,c2,max,count,min;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&c1,&c2);
min=c1<c2?c1:c2;
max=c1>c2?c1:c2;
if(max%2!=0 && min%2!=0)
printf("Ramesh\n");
else if(min%2==0 && max%2!=0)
printf("Suresh\n");
else if(max%2==0 && min%2!=0)
printf("Ramesh\n");
else printf("Suresh\n");
}
return 0;
}
【问题讨论】:
-
有趣的一个。有一件事是肯定的:您不使用
if else if,而是使用一些递归算法。例如,你取 c1-1 个小于 c1 的数字,并将所有可能的对添加到 c1。对于 c1 = 5,您有 1、2、3、4,因此 1-2、1-3、1-4、2-3、2-4、3-4 并保留 1-4 和 2-3。然后你递归地做同样的事情。只是第一个想法。顺便说一句,我喜欢数学!