请问这个鸡兔同笼的算法如何理解呢?

这个鸡兔同笼的算法我不是很理解,希望大家帮我解析一下代码,并举个实际数字的例子给我看一下,非常感谢!

img

img

img


#include <cstdio>

int main()
{
    int nCases, nFeets;
    while (scanf("%d", &nCases) != EOF)
    {
        for (int i = 0; i < nCases; i++)
        {
            scanf("%d", &nFeets);
            if (nFeets % 4 == 0)
                printf("%d%d\n", nFeets / 4, nFeets / 2);
            else if (nFeets % 2 == 0)
                printf("%d%d\n", nFeets / 4 + 1, nFeets / 2);
            else
                printf("0 0\n");
        }
    }
    return 0;
}
      

这个代码和前面的分析是意义对应的,

img

 
#include <cstdio>
int main()
{
    int nCases, nFeets;
    while (scanf("%d", &nCases) != EOF)//判定共有多少组输入
    {
        for (int i = 0; i < nCases; i++)
        {
            scanf("%d", &nFeets);//扫描每一组输入中脚的数量
            if (nFeets % 4 == 0)//如果能被4整除,则认为全是兔子
                printf("%d%d\n", nFeets / 4, nFeets / 2);
            else if (nFeets % 2 == 0)//否则,认为有1只鸡,剩余的全是兔子
                printf("%d%d\n", nFeets / 4 + 1, nFeets / 2);
            else
                printf("0 0\n");//否则为奇数或0,认为没有合理情况,输出0 0
        }
    }
    return 0;
}
 

#include <cstdio>
 
int main()
{
    int nCases, nFeets;
    int n;
    scanf("%d",&n);
    for(nFeets=2;nFeets<=n;nFeets+=2)
    {
        for(nCases=4; nCases< =n ; nCases+=4)
        {
            if (nFeets % 2 == 0 && nCases% 4 == 0 && nFeets+nCases == n)
                printf("%d%d\n", nFeets / 2, nFeets / 4);
         
        }
    }
    return 0;
}