赞
踩
大家好,小编来为大家解答以下问题,百钱买百鸡python编程用什么方法,百钱买百鸡python编程代码,今天让我们一起来看看吧!
《算经》中有一道很有趣的数学题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
转化为数学语言,也就是我们要找到三个不大于100的非负整数x,y,z,满足x+y+z=100,并且5x+3y+z/3=100.
很容易想到使用嵌套的for循环来搜索合适的三个变量python编辑皮卡丘的编程码。代码如下:
- 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只。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。