当前位置: 首页 > news >正文

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


转载于:https://www.cnblogs.com/tigerisland/p/7564769.html

相关文章:

  • [FTP]pureftp部署和优化
  • cookie的secure属性详解
  • GIT笔记
  • JQuery选择器大全
  • 最终用户计算一周观察 002
  • 数据库 性能对比
  • 最近一些任务
  • B00009 C语言分割字符串库函数strtok
  • Gartner:2016年十大信息安全技术(含解读)
  • C# 值类型和引用类型
  • mysql悲观锁以及乐观锁总结和实践
  • 自制WheelView沉浸式菜单及Dialog样式Activity
  • mvc ajax提交数组参数(转)
  • Git相关命令
  • javascript基础总结
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【面试系列】之二:关于js原型
  • Android 控件背景颜色处理
  • Android框架之Volley
  • Angular6错误 Service: No provider for Renderer2
  • es6(二):字符串的扩展
  • java概述
  • miaov-React 最佳入门
  • text-decoration与color属性
  • underscore源码剖析之整体架构
  • Vue组件定义
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 使用SAX解析XML
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 阿里云服务器如何修改远程端口?
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​如何防止网络攻击?
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • $(function(){})与(function($){....})(jQuery)的区别
  • $.ajax,axios,fetch三种ajax请求的区别
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)ssm码农论坛 毕业设计 231126
  • (三)终结任务
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)甲方乙方——赵民谈找工作
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET上SQLite的连接
  • @Autowired 与@Resource的区别
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149