【算法题2】小球的距离

小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳,求4个小球一共经过了多少米?(数字都为整数)

给定四个整数A,B,C,D,请返回所求结果。

测试样例:
100,90,80,70
返回:1020

 

 1 class Balls1:
 2     def calcDistanc(self,a,b,c,d):
 3         return 3*(a+b+c+d)
 4 
 5 
 6 class Balls2:
 7     def calcDistanc(self, a, b, c, d):
 8         x=a+b+c+d #x表示四个球离地面距离之和
 9         sum=0
10         while x>0:
11             sum+=x
12             x=x/2.0
13         return int(sum)
14 
15 
16 if __name__=="__main__":
17     print(Balls1().calcDistanc(100, 90, 80, 70))
18     print(Balls2().calcDistanc(100, 90, 80, 70))

此题关键在于思路及数学思考,运用极限的思想,其实一个小球,设其原本离地面的距离为N米,若按题目的意思落下直至停止,那么它总计经过的距离为3M米,数学验证即可,所以关键代码就一行(第3行)

posted @ 2018-04-09 16:27  Fintech带你飞  阅读(291)  评论(0编辑  收藏  举报