I00023 鸡兔同笼解法二

穷举法是程序员常用的手法,参见《鸡兔同笼》。


鸡兔同笼问题是《孙子算经》卷下中的第31题。今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?答曰:雉二十三。兔一十二。

一天,老师布置家庭作业,做鸡兔同笼问题。小明不喜欢做复杂计算,回家后开始训练鸡和兔。小明吹一声哨,鸡和兔都抬起一条腿,小明又吹一声哨,鸡和兔又再抬起一条腿,鸡就一屁股坐地下了,兔两腿站立。于是,小明明白了应该怎么算这个题。兔的数量=(脚数-头数-头数)/2,鸡的数量=头数-兔的数量。

程序员要解决实际问题,需要面对三个世界,一是现实世界,二是数学世界,三是数据世界。现实世界中的问题可以先放到数学世界中解决,最后再进入数据世界并且编写程序解决。

这里给出的程序,可以输入多组头和脚的数量。根据输入的头和脚的数量,计算出鸡和兔的数量。

程序如下:

/* 鸡兔同笼,今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何? */

#include <stdio.h>

int main(void)
{
    int head, feet, rabbit;

    printf("Please enter the number of feet and head:\n");
    while(scanf("%d%d", &head, &feet) != EOF) {
        if(head <= 0 || feet <= 0 || head * 2 > feet
                || head *  4 < feet
                || (feet - 2 * head) % 2 != 0)
            printf("Input error!\n");
        else {
            rabbit = (feet - 2 * head) / 2;
            printf("chicken=%d, rabbit=%d\n", head - rabbit, rabbit);
        }
    }

    return 0;
}

程序运行例子:

Please enter the number of feet and head:
35 94
chicken=23, rabbit=12
15 40
chicken=10, rabbit=5
10 41
Input error!
10 18
Input error!
10 20
chicken=10, rabbit=0


  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值