问题描述

中国古代数学家张丘建在他的《算经》中提出了一个著名的‘百钱百鸡问题’:一只公鸡值5钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡,母鸡,小鸡各多少只?

问题分析

公鸡 cock 母鸡 hen 小鸡 chicken

问题化解成不定方程组:

cock+hen+chicken=100
5 X cock+3 X hen +chicken/3 = 100

算法设计

利用穷举循环的方法来解决, 根据控制条件**if (5 * cock+3 * hen + chicken / 3.0 == 100) and (cock+hen+chicken==100)**来限制输出。此时穷举尝试次数为2134101=72114次

另外performance版本,可以将小鸡数量固定为100-cock-hen,所以穷举次数变为21*34=714,可以大大节省时间。

Code

Basic version:

# !/user/bin/python3
# -*- coding: utf-8 -*-
# @author: HHVic
# @desc: 牛顿迭代法求方程根import time# add timer to calculate the performance
# Basic performance
###############################################################start = time.time()if __name__=='__main__':# cock表示公鸡数量,hen表示母鸡数量,chicken表示小鸡数量,总共100只# 外层循环控制共计数量取值范围为0-20cock=0while cock<=20:#内层循环控制母鸡数量取值范围为0-33hen=0while hen<=33:#控制小鸡数量取值范围为0-100chicken=0while chicken<=100:#条件控制if (5*cock+3*hen+chicken/3.0==100) and (cock+hen+chicken==100):print('cock=%2d,hen=%2d,chicken=%2d\n' %(cock,hen,chicken))chicken+=1hen+=1cock+=1end = time.time()
print("The Basic Runtime is {0}".format((end-start)))

结果:

cock= 0,hen=25,chicken=75cock= 4,hen=18,chicken=78cock= 8,hen=11,chicken=81cock=12,hen= 4,chicken=84The Basic Runtime is 0.0230405330657959

Performance version:

# !/user/bin/python3
# -*- coding: utf-8 -*-
# @author: HHVic
# @desc: 牛顿迭代法求方程根import time# add timer to calculate the performance
# Basic performance
###############################################################start = time.time()if __name__=='__main__':# cock表示公鸡数量,hen表示母鸡数量,chicken表示小鸡数量,总共100只# 外层循环控制共计数量取值范围为0-20cock=0while cock<=20:#内层循环控制母鸡数量取值范围为0-33hen=0while hen<=33:#控制小鸡数量取值范围为0-100chicken=100-cock-hen#条件控制if 5*cock+3*hen+chicken/3.0==100:print('cock=%2d,hen=%2d,chicken=%2d\n' %(cock,hen,chicken))hen+=1cock+=1end = time.time()
print("The Basic Runtime is {0}".format((end-start)))

结果

cock= 0,hen=25,chicken=75cock= 4,hen=18,chicken=78cock= 8,hen=11,chicken=81cock=12,hen= 4,chicken=84The Basic Runtime is 0.001001119613647461

The Fun Of Algorithm - Day4 - 百钱百鸡问题相关推荐

  1. python百鸡百钱递归_百钱百鸡,一百块钱买一百只鸡的递归算法 javascript实现

    // 求百钱百鸡 function buy(ind, indexs, start) { start++; if (start > 2) { return; } if (!indexs[start ...

  2. java - 百钱百鸡小算法

    传送门: 袁咩咩的小小博客 百钱百鸡是一个非常经典的不定方程问题,最早源于我国古代的<算经>,这是古代著名数学家张丘建首次提出的.百钱百鸡问题原文如下: 鸡翁一,值钱五,鸡母一,值钱三,鸡 ...

  3. #Java编程题-百钱百鸡

    问题: 百钱百鸡问题.用100钱买100只鸡,公鸡一只五钱,母鸡一只三钱,雏鸡三只一钱,编程计算共有几种买法(要求每种鸡至少要买1只). 自己的实现,没有什么数据结构,算法,求大神指点!! packa ...

  4. 计算机求百钱买百鸡采用的算法,多种解法求百钱百鸡问题.doc

    多种解法求百钱百鸡问题 学 号: 0121210680225 <算法设计与分析B> 大 作 业 题 目多种解法求百钱百鸡问题学 院计算机科学与技术学院专 业软件工程班 级Sy1201姓 名 ...

  5. Python基础-“百钱百鸡”入门逻辑题(刚开始的建议藏起来)

    一:前言 最近这段时间辣条哥发现学Python的人是越来越多,但是适不适合学Python又有几个人知道呢?说到底编程其实很多时候需要的是较强的思维逻辑能力,如果基础的思维逻辑能力不行的话那辣条就得好好 ...

  6. 蓝桥杯1427: -买不到的数目(百钱百鸡问题变体)

    百钱白鸡问题: 公鸡5钱一只,母鸡3钱一只,小鸡1钱3只.100钱买100只鸡,问公鸡,母鸡,小鸡各几只? 问题实质是求不定方程的整数解(数论): a+b+c=100① 5a+3b+c/3=100② ...

  7. python算法1.5百钱百鸡

    1.问题描述 中国古代数学家张丘建在他的<算经>中提出了一个著名的"百钱百鸡问题":一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡.母鸡. ...

  8. 百钱百鸡:公鸡5元一只,母鸡3元一只,小鸡1元3只,100元要买100只鸡,共有几种情况

    百钱百鸡:公鸡5元一只,母鸡3元一只,小鸡1元3只,100元要买100只鸡,共有几种情况 class  TestDemo { public static void main(String[] args ...

  9. 算法思想(枚举)——百钱百鸡+生理周期+完美立方+熄灯问题+讨厌的青蛙

    枚举的思想其实时日常生活中提取的一种智慧 ^------^ 枚举的思想在生活中有着非常广泛的应用        在对事物进行归纳推理时,会逐一考察某个事物的所有可能的情况,并且逐一进行检验,这就是枚举 ...

最新文章

  1. Nginx源码分析链接
  2. 杰思安全获数千万元A+轮投资,绿盟科技领投,德联资本跟投
  3. Matlab化简符号表达式
  4. SpringBoot学习笔记(4)----SpringBoot中freemarker、thymeleaf的使用
  5. Zen Coding 系列教程一:入门
  6. 部分植物基因组数据库汇总
  7. Java proxy 子类代理
  8. 有人上传你的脸?Facebook新功能立刻就会提醒你
  9. iPad协议 一键转发 群发消息 获取群二维码 清理僵尸粉V:viplac
  10. RequestDispatcher请求转发方法
  11. 利用ACC控制酷狗音乐
  12. Android 接入穿山甲SDK之Banner广告
  13. MEM/MBA 复试准备(01)复试流程与内容
  14. 抖音视频如何发到快手?短视频如何一键发布?
  15. 设计分享|基于单片机的矩阵电子琴(汇编)
  16. 微信小程序设置背景图片
  17. cocos2d-x Tile Map 教程(一)
  18. ARC 101 E - Ribbons on Tree
  19. 疫情严峻,为什么VR全景能逆生长?
  20. Refused to display ‘https://xxx.com.cn‘ in a frame because it set ‘X-Frame-Options‘ to ‘sameorigin‘

热门文章

  1. 围绕禅道介绍公司流程
  2. android 流畅动画svg,android svg动画
  3. 购买的Microsoft Office不小心卸载后重新安装方法
  4. 一篇关于大黄蜂的鸡汤文的杂想
  5. 抓住那头牛(BFS广搜)
  6. sqlite设密工具如何使用(本人资源)
  7. 16g电脑内存有什么好处_电脑内存8G和16G有什么区别?教你区别电脑内存8G和16G...
  8. 前端自学Vue笔记干货(第一版,持续更新中~~~)
  9. mysql截取前几个字符串_mysql中截取指定字符前后的字符串
  10. “2020年嵌入式软件秋招经验和对嵌入式软件未来的一点思考”