您的位置:首页 > 编程语言 > Python开发

抛小球

2017-02-10 21:15 337 查看


题目描述

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

给定四个整数A,B,C,D,请返回所求结果。
测试样例:
100,90,80,70

返回:1020


题目来源:京东

简单题,精度控制

方法一:

# -*- coding:utf-8 -*-

class Balls:
def calcDistance(self, A, B, C, D):
# write code here
def fun(x):
num = x
while x >= 0.0000001:
num += x
x /= 2.0

import math
return math.ceil(num)
return int(fun(A) + fun(B) + fun(C) + fun(D))

if __name__ == "__main__":
a = Balls()
print a.calcDistance(100,90,80,70)
方法二:
设整数为x,得到公式:

sn = x + x * (1 + 1/2 + 1/4 + ... + (1/2)^m)

sn = x + x * (1- (1/2)^m) / (1-1/2)

(1/2)^m 无限接近于0

sn = x + x * 2;

sn = 3x;

所以答案为 3*(A+B+C+D)

# -*- coding:utf-8 -*-

class Balls:
def calcDistance(self, A, B, C, D):
# write code here
return 3 * (A + B + C + D)

if __name__ == "__main__":
a = Balls()
print a.calcDistance(100,90,80,70)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 算法