【算法题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行)