最近独到一篇关于”百钱买百鸡”的Python编程,觉得挺有意思,索性自己改写一下优化算法。
原题目:
# 我国古代数据加张邱建在《算经》中提出一个著名的数序为问题:
# 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问
# 鸡翁,鸡母,鸡雏几何?
# 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问
# 鸡翁,鸡母,鸡雏几何?
分析:
1、这个题目其实重点并不是编程,看过很多人对这个编程最少套用了3层循环。
2、其实这道题一层循环即可搞定。有很多考试也会用到这道题,可以善存。
解题思路:重点在解方程
# 1、设鸡翁=x,鸡母=y,鸡雏=z
# 2、数量的关系:x + y + z = 100(只) ①
# 3、钱的关系:5x + 3y + z/3 = 100 (钱) ②
# 4、解方程:
# 第一步:方程② × 3 = 15x + 9y + z = 300 ③
# 第二步:③ – ① :14x + 8y = 200;
# 第三步: 化简一下:7x + 4y = 100;
# 第四步:移项 = y = (100 – 7x)/4
# 所以:x只能是4的倍数,因为不能为小数,当然,如果题目变更,也就是是某个数的倍数即可。也就是你会找到循环的增倍关系。
# 1、设鸡翁=x,鸡母=y,鸡雏=z
# 2、数量的关系:x + y + z = 100(只) ①
# 3、钱的关系:5x + 3y + z/3 = 100 (钱) ②
# 4、解方程:
# 第一步:方程② × 3 = 15x + 9y + z = 300 ③
# 第二步:③ – ① :14x + 8y = 200;
# 第三步: 化简一下:7x + 4y = 100;
# 第四步:移项 = y = (100 – 7x)/4
# 所以:x只能是4的倍数,因为不能为小数,当然,如果题目变更,也就是是某个数的倍数即可。也就是你会找到循环的增倍关系。
因此:一次性循环即可搞定,下面用Python的编码来解决这个问题
1 count = 1 2 for i in range(0, 100, 4): # 四的倍数 3 x = i 4 y = int((100 - 7*x)/4) 5 z = int(100 - x - y) 6 if x + y + z == 100 and x*y*z >=0 : # 买够100值打印结果,且不能等于0 7 print("第{0}种够买情况:鸡翁{1}只,鸡母{2}只,鸡雏{3}只".format(count,x,y,z)) 8 count = count + 1
运行结果:
第1种够买情况:鸡翁0只,鸡母25只,鸡雏75只
第2种够买情况:鸡翁4只,鸡母18只,鸡雏78只
第3种够买情况:鸡翁8只,鸡母11只,鸡雏81只
第4种够买情况:鸡翁12只,鸡母4只,鸡雏84只
注意点:切记算出的结果只能为整数且不能为0,这个不要忘记了
原文地址:http://www.cnblogs.com/noah0532/p/16810768.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性