一、问题描述

《算经》中有一道很有趣的数学题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

转化为数学语言,也就是我们要找到三个不大于100的非负整数x,y,z,满足x+y+z=100,并且5x+3y+z/3=100.

二、普通解法

很容易想到使用嵌套的for循环来搜索合适的三个变量。代码如下:

for rooster in range(101):for hen in range(101):for chick in range(101):if rooster + hen + chick == 100 and rooster*5 + hen*3 + chick/3 == 100:print(f'公鸡{rooster}只,母鸡{hen}只,鸡雏{chick}只。 ')

但是,上述代码的效率实在是不高。完成上述的搜索,程序重复执行了了1030301次。

三、优化解法

可以从两个角度入手优化上述代码:

1. 三种鸡的数量一共是100只,鸡雏的数量可以用100减去公鸡和母鸡的数量,这样就可以省掉一个变量,继而省掉一层循环,大大地提高了效率。

2. 受价格的限制,每种鸡的购买数量有一个更低的上限。比如公鸡一只要5钱,那么100钱最多只能买20只公鸡,根本达不到100只。我们上面设置的上限过于粗略,存在浪费。

优化后的代码如下:

for rooster in range(21):for hen in range(34):if rooster*5 + hen*3 + (100-rooster-hen)/3 == 100:print(f'公鸡{rooster}只,母鸡{hen}只,鸡雏{100-rooster-hen}只。 ')

优化后,完成搜索只需要重复执行714次。

得到的答案如下:

公鸡0只,母鸡25只,鸡雏75只。
公鸡4只,母鸡18只,鸡雏78只。
公鸡8只,母鸡11只,鸡雏81只。
公鸡12只,母鸡4只,鸡雏84只。

如果这篇博文帮到了你,就请给我点个吧(#^.^#)

有疑问也欢迎留言~博主可nice啦,在线秒回ヾ(◍°∇°◍)ノ゙

Python实现百钱买百鸡相关推荐

  1. python百钱买百鸡问题算法_百钱买百鸡问题的伪代码算法?

    不同的编程语言,对于判断语句,循环语句等的写法是不一样的.但对于同一问题,我们只关心算法,于是就提出了伪代码,统一一下判断语句怎么写,循环语句怎么写,这样无论程序员学的是 C++,还是 JAVA,还是 ...

  2. python百钱买百鸡-百钱买百鸡的Python实现

    "百钱买百鸡"是一个很有历史的问题了,大意就是:小鸡半文一只,母鸡一文一只,公鸡二文一只,现有一百文钱,刚好买了一百只鸡,请问小鸡.母鸡与公鸡各有多少只? 如果假设小鸡.母鸡和公鸡 ...

  3. 微课|中学生可以这样学Python(例4.3):百钱买百鸡

    适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第4章  循环结构 4.3  精彩例题分析与解答--例4.3  百钱买百鸡 京东购买链接:http ...

  4. Python输入账号密码判断是否正确并输出,典型案例-百钱买百鸡的两个程序代码

    目录 前 一.输入账号密码判断是否正确并输出 1.实现的功能 2.代码程序 3.运行截图 二.典型案例-百钱买百鸡 1.实现的功能 2.代码程序 3.运行截图 前言 1.因多重原因,本博文由两个程序代 ...

  5. python——百钱买百鸡:一只公鸡5块钱,一只母鸡3块钱,三只小鸡1块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?

      学习<python程序设计教程>的时候,遇到了这个问题,觉得还蛮好玩的: 百钱买百鸡:一只公鸡5块钱,一只母鸡3块钱,三只小鸡1块钱,现在要用一百块钱买一百只鸡,问公鸡.母鸡.小鸡各多 ...

  6. 百钱买百鸡python编程列表推导式_使用循环和列表推导式两种方法求解百钱买百鸡问题。假设大鸡5元一只,中鸡3元一只,小鸡1元三只,现有100元钱想买100只鸡,有多少种买法?...

    [程序题]编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数 1/1+1/3+...+1/n [单选题]患者男,67岁.确诊为原发性支气管肺癌,为行手术 ...

  7. 百钱买百鸡python创新编程_编程零基础应当如何开始学习 Python?

    文科老狗被迫学了python,进入快乐领域 当然高赞的回答已经很详尽很全面了,但就大多数人的尿性: 妙啊~ 点赞~ 喜欢~ 收藏~ 然后感觉自己汲取了知识满意的返回离开√ 接下来我会分享自己学习的经验 ...

  8. 用Python输出百钱买百鸡问题的答案

    这是一道经典的数学问题:百钱买百鸡. 问题描述:公鸡5元一只,母鸡3元一只,小鸡3只一元,用100块钱买100只鸡,请问公鸡.母鸡.小鸡各几只? 下面是使用 Python 解决这个问题的代码: for ...

  9. python百钱买百鸡问题算法_好玩的Python:植树问题,平闰年,鸡兔同笼,百钱白鸡,属相问题...

    Python用来解决日常生活中的小问题很容的. # 植树问题 total = 1 age = 1 while total <= 100: age += 1 total += age print( ...

  10. Python版的百钱买百鸡问题

    今天是圣诞节了,据说老外都会吃火鸡,为了应景,发个程序设计课程中的传统题目吧,顺祝所有朋友圣诞节快乐! 百钱买百鸡问题:假设大鸡5元一只,中鸡3元一只,小鸡1元三只,现在有100元钱,想买100只鸡, ...

最新文章

  1. Hibernate检索策略之5.4一对多单向关联检索策略——Hibernate4究竟怎么玩
  2. 利用Mycat中间件实现RDS MySQL的分库分表及读写分离功能
  3. mysql某一列之前加一个球_MySQL作业:三色球,概率题,子查询【诗书画唱】
  4. echarts php 数据处理,PHP+echarts读取地图数据
  5. 828c语言程序设计_21计算机考研只考一门高级语言程序设计的院校大汇总!
  6. 素数方法(thinking in java)
  7. css文本过长如何设置省略号
  8. 架构师学习笔记(持续更新)
  9. GridView网格控件
  10. 法务管理项目结项了mark一下
  11. ts 视频流手动合并
  12. 神州信息盘活农村三资,以金融科技服务三农助推乡村振兴
  13. 揭秘中国球员十大豪宅
  14. 求逆序对---学习笔记
  15. 每天学一点flash(78) flash cs5.5 加载 jpeg-xr 格式
  16. 作文总结思维导图怎么画?分享作文类型总结思维导图模板
  17. 一张图解析FastAdmin中的FormBuilder表单生成器
  18. 最小公倍数与最大公因数
  19. 期刊投稿状态_SCI 稿件在线投稿时遇到的几中状态
  20. Richard Hamming “You and your research“演讲正文

热门文章

  1. 电子与通信工程专业毕设选题推荐
  2. 分数一定是有理数吗?
  3. MySQL中的字段约束条件
  4. (2017.9.22更新)TrueCrypt中国版CnCrypt V1.23(磁盘加密)
  5. linux系统程序下载,Linux平台的下载程序
  6. 十年MFC经历认识的Microsoft技术2
  7. JavaScript在函数中定义全局变量
  8. Qt之创建桌面和开始菜单快捷方式
  9. HTML+CSS 仿写淘宝商城分类导航
  10. 千兆网线和百兆网线的做法一样吗