SYNC13C SPOJ 错误答案

Posted

技术标签:

【中文标题】SYNC13C SPOJ 错误答案【英文标题】:SYNC13C SPOJ Wrong answer 【发布时间】:2014-01-22 10:49:17 【问题描述】:

Link to challenge

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。然后你递归地做同样的事情。只是第一个想法。顺便说一句,我喜欢数学! 【参考方案1】:

代码比这简单得多。首先,让我解释一下算法。

W 是一个数组,

W[i] = 1 if the user wins by choosing to split the box of i chocolates and 0 if he looses.

让我们构造这个数组,我们将得到一个模式。

W[1] = 0, since one can't split the box of one chocolate.

对于所有i&gt;1,我们有:

W[i] = 1 如果存在整数 ab 使得 a+b=iW[a]=W[b]=0 , 0 否则。

上面的陈述暗示,为了让用户通过选择i巧克力盒获胜,他需要确保无论他进一步选择哪个盒子,他的对手都会输。他的对手输了意味着W[a]=W[b]=0a+b=i

如果我们尝试填充我们得到的这个数组,

W : 1 2 3 4 5 6 7...

值:0 1 0 1 0 1 0...

这意味着如果给定的整数之一是even,那么suresh 将获胜。如果两个都是odd,那就意味着ramesh会赢。

希望我清楚。

【讨论】:

【参考方案2】:
#include<stdio.h>
int main()

    int t;
    scanf("%d",&t);
    while(t--)
    
       int a,b;
       scanf("%d%d",&a,&b);
       if(a%2==1 && b%2==1)
           printf("Ramesh\n");
       else
           printf("Suresh\n");
        
    return 0;

【讨论】:

以上是关于SYNC13C SPOJ 错误答案的主要内容,如果未能解决你的问题,请参考以下文章

SPOJ 问题 - 这里出了啥问题?

spoj 中的 SIGSEGV 错误,但在 ideone 中工作正常

在 SPOJ 上提交代码会导致运行时错误 (SIGABRT)

SPOJ 拒绝 BYTESM2(魔法石)的解决方案

为啥我的 SPOJ GCD2 代码在 SPOJ 上出错?

SPOJ - REPEATS RMQ?????????