百钱买百鸡python编程代码,百钱买百鸡for循环python

大家好,小编来为大家解答以下问题,百钱买百鸡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只。

如果这篇博文帮到了你,就请给我点个吧(#^.^#)
有疑问也欢迎留言~博主可nice啦,在线秒回ヾ(◍°∇°◍)ノ゙
  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值