Python做小学四年级奥数题算三个人的年龄

题目如下:
#甲乙丙三人的当前年龄和为120,若甲是乙的年龄的一半时,丙是42,
#若丙是乙年龄的一半时,甲是6,求甲,乙,丙三人的当前年龄。
题目分析:直观可以看到一个条件:三个人的年龄和是120岁,于是我们可以想到三重循环,因为年龄不能为负,就有取值范围是0至120,
但这样真的好吗?从题目上,我们还能找到另一个条件:假如甲的年龄是乙的一半时,丙是42岁,这句话怎么分析?
我们令x为甲的年龄,y为乙的年龄,那就是说当x变成0.5*y时,本来是年龄为z的丙,要变成42岁。这个变的过程中,年龄差是不变的。于是就有x-0.5y=z-42,同理,题目中还还可以建立第三个等式:z-0.5y=x-6
为了设计出的程序效率更高一些,我们直接让丙的年龄z=120-x-y,就有了正面的代码:

for x in range(120):
    for y in range(120):
        z=120-x-y
        if x-0.5*y==z-42 and z-0.5*y==x-6:
                print("甲的年龄:{},乙的年龄:{},丙的年龄:{}".format(x,y,z))

运行代码,却可算出甲,乙,丙三个人的年龄甲的年龄:27,乙的年龄:48,丙的年龄:45

上一篇:Day09_42_Set集合_HashSet


下一篇:leetcode算法python第8题