前言

百钱百鸡问题作为一个经典的数学问题,利用python实现,其思路也是比较简单的,主要就是利用for循环语句通过枚举法,根据题目条件确定解的大致范围,并对此范围内的所有可能的解进行逐一验证。


功能需求

一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱。用百钱买百鸡,那么公鸡、母鸡和小鸡分别可以买多少只?

分析问题

首先可以定义三个变量cock、hen、chick分别代表公鸡、母鸡和小鸡,那么问题自然而然的就转换为数学问题:

cock+hen+chick = 100

cock*5+hen*3+chick/3 = 100


程序实现

#

import  time
start = time.time()
# start time
# 外层循环控制公鸡数量取值范围 1--20
for cock in range(0,21):
    # 内层循环控制母鸡的数量的取值范围 0--33
    for hen in range(0,34):
    # 最内层控制小鸡数量的取值范围  0--100
        for chick in range(0,101):
            if(cock + hen + chick == 100) and (cock * 5 + hen * 3 + chick/3 ==100):
                print("您可以购买的方案是:\n"+str(cock)+"只公鸡\n"+str(hen)+"只母鸡\n"+str(chick)+"只小鸡\n")
#结束时间
end = time.time()
print('此算法总耗时:',end-start)


运行效果

python实现百钱百鸡问题​_取值范围



提升需求

如果是需要用户输入所带的钱数以及公鸡、母鸡和小鸡的价格,然后给用户返回一些可行的方案应该如何解决呢?

思路:

1:将程序写入函数中

2:函数中通过input()函数来获取用户输入的所带的钱数以及公鸡、母鸡和小鸡的价格

3:通过相应的计算规则来制定数量关系,其中各个鸡的取值范围仍需要利用range()函数来实现,但是传入的参数需要进行整理,比如range(start,end),start参数可以是0,end参数可以利用python中的math模块中的向上取整函数math.ceil()来求出

4:最后通过print语句,按照相应的格式输出。