python百钱买百鸡代码_python解决百钱买百鸡
百钱买百鸡
关注公众号“轻松学编程”了解更多。
现有100钱,公鸡5文钱一只,母鸡3文钱一只,小鸡一文钱3只
要求:公鸡、母鸡,小鸡都要有,把100文钱花完,买的鸡的数量正好是100。
问:一共能买多少只公鸡,多少只母鸡,多少只小鸡?
穷举法:
方案一:
思路:
第一重循环公鸡从1只循环到100只
第二重循环母鸡从1只循环到100只
第三重循环小鸡从1只循环到100只
然后进行判断:
数量:公鸡+母鸡+小鸡 =100
钱:公鸡5+母鸡3+小鸡 =100
输出满足条件的情况
代码如下:
for cock in range(1,101): # 公鸡
for hen in range(1,101): #母鸡
for chick in range(1,101): #小鸡
if cock * 5 + hen * 3 + chick == 100:
if cock + hen + chick * 3 == 100:
print("公鸡有%d只\t母鸡有%d只\t小鸡有%d只"%(cock,hen,chick * 3))
输出:
公鸡有4只 母鸡有18只 小鸡有78只
公鸡有8只 母鸡有11只 小鸡有81只
公鸡有12只 母鸡有4只 小鸡有84只
虽然能求出结果,但仔细一想,用了三重循环,每重循环要执行100次,三重就是100100100,太耗时间了,能不能有一种更好的解决方法呢?
方案二:
思路:买了一只公鸡,花掉5钱,还剩下100 - 5 = 95 钱,买母鸡和小鸡的钱只有95钱,而不是100钱。再买一只母鸡,还剩下100- 5 - 3 = 92钱,那么买小鸡的钱只有92钱…所以每重循坏次数不再是固定的100,而是变化的。
第一重 cock:100 / 5 = 20 次
第二重 hen:(100 - cock) / 3次
第三重:100 - cock -hen 次
代码如下:
for cock in range(5,101,5): # 公鸡
for hen in range(3,101 - cock,3): #母鸡
for chick in range(1,101 - cock - hen): #小鸡
if cock // 5 + hen // 3 + chick * 3 == 100 and cock + hen + chick == 100:
print("公鸡有%d只\t母鸡有%d只\t小鸡有%d只" % (cock // 5, hen // 3, chick * 3))
下面做一个时间对比:
import time
start = time.clock()
for cock in range(1,101): # 公鸡
for hen in range(1,101): #母鸡
for chick in range(1,101): #小鸡
if cock * 5 + hen * 3 + chick == 100 and cock + hen + chick * 3 == 100:
pass
end = time.clock()
time1 = end - start
print("方案一所花时间",time1)
start = time.clock()
for cock in range(5,101,5): # 公鸡
for hen in range(3,101 - cock,3): #母鸡
for chick in range(1,101 - cock - hen): #小鸡
if cock // 5 + hen // 3 + chick * 3 == 100 and cock + hen + chick == 100:
pass
end = time.clock()
time2 = end - start
print("方案二所花时间",time2)
print("方案一所花时间是方案二的%d倍"%(time1 // time2))
输出:
方案一所花时间 0.32884016429388524
方案二所花时间 0.0030011999201297046
方案一所花时间是方案二的109倍
经过多次测试,方案一所花时间差不多是方案二的100倍。
这个小小的程序可以说明算法的重要性,用不同的算法,时间复杂度是不一样的。在实现一个功能的基础上,还要兼顾效率的问题。
当然这个题目还可以用求不定方程整数解的办法来解决,这个算法用时会更短。
后记
【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。
也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!
公众号
关注我,我们一起成长~~
python百钱买百鸡代码_python解决百钱买百鸡相关推荐
- python用turtle画月亮的代码_Python利用turtle库绘制彩虹代码示例
语言:Python IDE:Python.IDE 需求 做出彩虹效果 颜色空间 RGB模型:光的三原色,共同决定色相 HSB/HSV模型:H色彩,S深浅,B饱和度,H决定色相 需要将HSB模型转换为R ...
- python二维码生成识别代码_Python学习案例之二维码生成识别
前言 在 JavaWeb 开发中,一般使用 Zxing 来生成和识别二维码,但是,Zxing 的识别有点差强人意,不少相对模糊的二维码识别率很低.不过就最新版本的测试来说,识别率有了现显著提高. 对比 ...
- python测试程序的qps和响应时间代码_Python并发请求下限制QPS(每秒查询率)的实现代码...
前两天有一个需求,需要访问某API服务器请求数据,该服务器限制了QPS=2(哈哈应该都知道是哪个服务器了吧_(:з」∠)_),因为QPS很小所以就使用阻塞式请求.后来开通了服务,QPS提高到了20,阻 ...
- python如何调用c++numpy.ndarray代码_python – 在cython中使用numpy:定义ndarray数据类型/ ndims...
我正在尝试编写一些cython代码来进行numpy数组的计算. Cython似乎不喜欢我见过的所有示例中使用的[]来定义数据类型和维数. 例如,我有一个文件test.pyx: cimport nump ...
- python爬取网页书籍名称代码_python爬取亚马逊书籍信息代码分享
我有个需求就是抓取一些简单的书籍信息存储到mysql数据库,例如,封面图片,书名,类型,作者,简历,出版社,语种. 我比较之后,决定在亚马逊来实现我的需求. 我分析网站后发现,亚马逊有个高级搜索的功能 ...
- python计算长方体体积最简单代码_python处理DICOM并计算三维模型体积
python处理DICOM并计算三维模型体积 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: python处理DICOM并计算三维模型体积.txt ] (友情提示 ...
- python爬取京东商品信息代码_Python利用Xpath选择器爬取京东网商品信息
HTML文件其实就是由一组尖括号构成的标签组织起来的,每一对尖括号形式一个标签,标签之间存在上下关系,形成标签树:XPath 使用路径表达式在 XML 文档中选取节点.节点是通过沿着路径或者 step ...
- python 识别登陆验证码图片(完整代码)_python 识别登录验证码图片功能的实现代码(完整代码)...
在编写自动化测试用例的时候,每次登录都需要输入验证码,后来想把让python自己识别图片里的验证码,不需要自己手动登陆,所以查了一下识别功能怎么实现,做一下笔记. 首选导入一些用到的库,re.Imag ...
- 求python一个类与对象的代码_Python基础系列(五)类和对象,让你更懂你的python代码...
首先,非常感谢各位打开本博文,本博文是Python入门基础系列文章之一,Python目前是非常火的编程工具,其实作为编程不在只是程序员的专利,每一个人在日常的工作中.学习中都会或多或少的要用到一些工具 ...
最新文章
- 深度学习面试题09:一维卷积(Full卷积、Same卷积、Valid卷积、带深度的一维卷积)...
- Linux系统环境查看已经登录用户信息及管理
- oracle体系结构剖析
- android 拦截点击事件,Android事件拦截机制
- linux ping库函数,Linux 常用基本命令 ping ifconfig
- 理解杀毒软件技术的意义 脱壳、虚拟、启发式介绍
- TestNG和Maven配置指南
- 结构性约束事件聚合下的在线多目标跟踪方法
- 常用服务器安装和部署
- 【Flink】Flink 1.9 写入 es6 案例
- gcc之UTF-8编码
- springboot 指定 logback_spring boot与日志
- ulli中自定义属性后取值的问题
- MATLAB取整操作
- c语言小球碰壁,小球碰壁效果
- Longhorn 云原生分布式块存储解决方案设计架构和概念
- Pair project(刘昊岩11061156 黄明源11061186)
- 登录北京住房公积金,使用已注册过账号
- 康特EPON OLT开局配置
- 降本增收 相约Q4 |衡石九月头条
热门文章
- smart 3D 中的block merge(空三合并)功能详细介绍
- 数据预处理系列:(二)创建试验样本数据
- Exceeded limit on max bytes to buffer : 262144
- Java8 List removeIf用法技巧
- 【Tools】PolyWorks Metrology Suite 2020中文版安装教程详解(在线版)
- 使用cmd命令查看电脑是不是翻新机 如何查看自己电脑是不是翻新机
- iOS Jenkins自动化打包
- 长安大学水利计算机专业等级,2016年长安大学计算机类(含计算机科学与技术、软件工程、网络工程等4个专业)专业最低分是多少?...
- 企业IT信息化的方案设计
- java计算机毕业设计-游戏账号交易平台-演示录像-源码+数据库+系统+lw文档+mybatis+运行部署