有什么逻辑错误

0

题目地址:https://oj.neauacm.cn/problem.php?id=1180

题目描述

黑大帅和潇洒哥在玩游戏,他们找到n行石子,每行有m颗石子,现在游戏规则是这样的,每个人轮流拿,每次只能拿一行中的一个或连续两个,最后谁拿不了谁输,为了展现绅士风范,潇洒哥让黑大帅先拿。

输入
输入包含多组数据。
输入的第一行为一个整数t(1<=t<=1000),代表测试用例的组数。
接下来的t组测试用例按照如下格式给出: 
每组数据占一行,包含两个整数n,m(1<=n<=5000,1<=m<=10^16)。

输出
对于每一组测试用例,在新的一行中,如果黑大帅能赢,输出“Black Marshal”,否则输出“Chic brother”,不包含引号。

样例输入
2
1 1
2 3
样例输出
Black Marshal
Chic brother

#include <stdio.h>

int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        long long  n,m;
        scanf("%lld%lld", &n,&m);
        if(m==1)
        {
            if(n%2==0)
            {
                printf("Chic brother\n");
            }
            else
            {
                printf("Black Marshal\n");
            }
        }
        else if(m%3==0||n%3==0)
        {
            printf("Chic brother\n");
        }
        else
        {
            printf("Black Marshal\n");
        }
    }
    return 0;
}
ava
婆罗摩笈多

2023-10-22

悬赏金额:¥5 元

1. 回答问题后,可以看到提问者联系方式。

2. 如果对问题有不明确的地方,可以在回复中写下你的疑问,就可以看到提问者的联系方式,然后详细沟通。

3. 如果私下沟通解决了问题,建议回答者将解决方案补充到本站,提问者勾选正确答案。每个人回答的问题数量,是能力的象征。

4. 回答问题后,可以通过提问者的联系方式私下协商领取悬赏的方式,本站不做任何干涉,不做担保,不抽取佣金,请双方谨慎操作。

1

第一个if逻辑没有问题,当m为1是,只要行数是奇数就是黑大帅赢,否则就是潇洒哥赢

if(m==1)
        {
            if(n%2==0)
            {
                printf("Chic brother\n");
            }
            else
            {
                printf("Black Marshal\n");
            }
        }

if之后的else逻辑存在遗漏,当m%3==0时,则代表先手必输,因为每一行都是黑大帅先手,然后以潇洒哥结束,潇洒哥赢。

当m%3 !=0时则

奇数行时,每一行以黑大帅先手,黑大帅结束,黑大帅赢,

偶数行时,每一行以潇洒哥先手,潇洒哥结束,潇洒哥赢。

 else if(m%3==0)
 {
	printf("Chic brother\n"); 
 }else {
	if(n%2==0) 
	{
		printf("Chic brother\n"); 		 	 
	}
	else
	{
		printf("Black Marshal\n");	
	}		
	
 }
        
ava

2023-10-24

0

#include <stdio.h>

int main()

{

    int t;

    scanf("%d", &t);

    

    while (t--)

    {

        long long n, m;

        scanf("%lld %lld", &n, &m);

        

        if (m == 1) // 如果m等于1,根据规则判断谁能赢

        {

            if (n % 2 == 0)

            {

                printf("Black Marshal\n");

            }

            else

            {

                printf("Chic brother\n");

            }

        }

        else if (m % 3 == 0 || (n % 3 == 0 && m % 2 == 0)) // 如果m是3的倍数或者(n是3的倍数且m是偶数),潇洒哥能赢

        {

            printf("Chic brother\n");

        }

        else

        {

            printf("Black Marshal\n");

        }

    }

    

    return 0;

}

技术讨论社区
相关提问