PTA 鸡兔同笼

这篇博客介绍了一个经典的数学问题——雉兔同笼,通过编程实现寻找解决方案。提供的C语言函数`ChickenRabbit`利用迭代法遍历所有可能的雉(鸡)和兔的数量组合,当头和脚的数量匹配时找到答案。如果找不到解则返回`None`。博客还附带了输入输出示例以及裁判程序验证解的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

孙子算经》记载:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”

函数原型


int ChickenRabbit(int *chicken, int *rabbit, int head, int foot);

说明:head 和 foot 为头和脚的数量,chicken 和 rabbit 为指示鸡和兔数量的指针。若问题有解,则将鸡和兔的数量保存到 chicken 和 rabbit 所指示的变量中,函数值为 1(真);否则不改变 chicken 和 rabbit 所指示的变量,函数值为 0(假)。

裁判程序

#include <stdio.h>

int ChickenRabbit(int *chicken, int *rabbit, int head, int foot);

int main()
{
    int h, f, c, r;
    scanf("%d%d", &h, &f);
    if (ChickenRabbit(&c, &r, h, f))
    {
        printf("%d %d\n", c, r);
    }
    else
    {
        puts("None");
    }
    return 0;
}

/* 你的提交代码将被嵌在这里 */

输入样例1

35 94

输出样例1

23 12

输入样例2

30 71

输出样例2

None
int ChickenRabbit(int *chicken, int *rabbit, int head, int foot)
{
    int i=0;//思路,先搜索一遍,如果没有答案,就返回0
    for(int i=0;i<=head;i++)
    {
        int j=head-i;
        if(i*2+j*4==foot)
        {
            *chicken=i;
            *rabbit=j;
            return 1;
        }
    }
    return 0;
}
//其实还有数学方法实现


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值