请问这个鸡兔同笼哪里不对?


#include<stdio.h>
int main()
{
    int c,r,n,m;
    scanf("%d%d",&n,&m);
    c=(4*n-m)/2;
    r=n-c;
    if(c<=0||r<=0)
    {
        printf("No");
    }
    else
    {
        printf("%d %d\n",c,r);
    }

    return 0;
}

是不是无解情况没考虑全?

需要先判断(4*n-m)是不是2的倍数,如果不是2的倍数,也没有解
修改如下:


#include<stdio.h>
int main()
{
    int c,r,n,m;
    scanf("%d%d",&n,&m);

    if( (4*n-m)%2 == 0) 
    {
        c = (4*n-m)/2;
        r = n-c;
        if(c<=0||r<=0)
        {
            printf("No");
        }
        else
        {
            printf("%d %d\n",c,r);
        }
    }else
        printf("No");
    return 0;
}