用python解决数学题——100块买100只鸡

这道数学题目是这样的:市场上有公鸡、母鸡和小鸡,它们的价格分别是1块、3块和0.5块一只。问题是我有100块钱,想买100只鸡,可以有多少种买法?

解题的思路就是我们从题目中了解到,如果100块钱全买公鸡,那么最多可以买100只;如果买母鸡,那么最多可以买33只;如果买小鸡,那么最多可以买100只(因为题目只要求买100只)。

所以我们决定假设可以买x只公鸡、y只母鸡、z只小鸡,然后x的最大值是100,y的最大值是33,z的最大值是100,我们对这3个假设值进行遍历求解。

我们先用for循环来实现它:

# for循环
count = 0
for x in range(0, 101):
    for y in range(0, 34):
        for z in range(0, 101):
            if x + y + z == 100 and x + 3 * y + 0.5 * z == 100:
                count += 1
                print("买法" + str(count) + ":公鸡" + str(x) + "只," + "母鸡" + str(y) + "只," + "小鸡" + str(z) + "只。")

执行结果如下:

我们再用while循环来实现一次:

# while循环
count = 0
x = 0
while x <= 100:
y = 0
while y <= 33:
z = 0
while z <= 100:
if x + y + z == 100 and x + 3 * y + 0.5 * z == 100:
count += 1
print("买法" + str(count) + ":公鸡" + str(x) + "只," + "母鸡" + str(y) + "只," + "小鸡" + str(z) + "只。")
z += 1
y += 1
x += 1

执行结果如下:

由此可得,一共有21种买法。

发表评论

邮箱地址不会被公开。 必填项已用*标注