原标题:用编程的方法解决“鸡兔同笼”系列问题,其实很简单
今日题型讲解
同学们是不是觉得古人很“无聊”啊,有事没事竟然把鸡和兔子关在一个笼子里数腿玩,还要各种变着花样考验大家
相信大家在学校里都已经学过“鸡兔同笼”这个问题的数学解法啦。今天我就来讲解两种编程解法,让我们用21世纪的方法再次解开这道经典古老难题~~~
今有雉兔同笼,
上有三十五头,
下有九十四足,
问雉兔各几何?
第一种解法
#假设 鸡有0只 ,则 兔有35-ji只
ji=0
#用while循环语句来判断符合足94只的情况
while 1:
tu=35-ji
#如果 鸡的脚+兔的脚=94,则输出鸡兔数量的结果,中断循环
if 2*ji+4*tu==94:
print("鸡有:",ji,"只")
print("兔有:",tu,"只")
break
#否则用鸡的数量加1,循环判断符合情况的数字
ji+=1
第二种解法
分析:
根据题意,头的总数为35,我们用变量head来记录头的总数:head=35
而腿的总数为94,我们用变量foot来记录腿的总数:foot=94
我们用变量chicken记录鸡的数量。因为头的总数为35,说明鸡和兔共有35只,所以鸡的数量是0-35之间的某一个数,这里我们用for循环来指挥计算机,自动罗列所有可能出现的情况:
for chicken in range(0,head+1):
然后,我们用变量rabbit记录兔子的数量。因为鸡和兔的总数等于头的数量,所以兔的数量rabbit等于头的总数head减去鸡的数量chicken:
rabbit=head-chicken
鸡有两条腿,兔子有四条腿,所以腿的总数为:
chicken*2+rabbit*4
当腿的总数恰好等于题目的要求94条腿的时候,我们就成功地得到了问题的解。
最后输出答案:
if chicken*2+rabbit*4==foot:
print("鸡",chicken,"兔",rabbit)
'''
完整程序:
head=35
foot=94
for chicken in range(0,head+1):
rabbit=head-chicken
if chicken*2+rabbit*4==foot:
print("鸡有:",chicken,"只")
print("兔有:",rabbit,"只")
万能解题法
那么,为了解决类似所有题目【给出不同数目的头和脚】,我们需要自定义一个函数,这样就做到了“秒”出答案!!!
def jitutonglong(a, b):
x = (4 * a - b) / 2
if a != 0 and (4 * a - b) % (x * 2) == 0:
y = a - x
if x < 0 or y < 0:
print("{}只头{}条腿的情况无解".format(a, b))
else:
print("鸡有{}只,兔有{}只".format(int(x), int(y)))
else:
print("{}只动物{}条腿的情况无解".format(a, b))
a = eval(input("请输入鸡和兔的总数n"))
b = eval(input("请输入鸡和兔的脚数n"))
jitutonglong(a, b)
程序运行如下
让你在数学上头疼的“鸡兔同笼”问题放到编程里就可以轻松解决,你学会了吗?
其实很多简单和日常的小问题,都蕴藏着编程最核心的思想——计算思维,计算思维的养成又能够很好的推动数学思维与能力的提升。
编程是很神奇的语言,大家一起加油吧
责任编辑: