035-字节跳动题目-小球往返路程


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | # -*- coding: utf-8 -*- """ Created on Tue Jul 2 17:46:55 2019 @author: zangz """ def weight(h,cnt): ''' 题目:一球从H米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第cnt次落地时,共经过多少米?第10次反弹多高? :param h:原始高度 :param cnt:着地次数 :return:sum 第cnt 着地经过的米 思路:1、第n次反弹高度用循环所得 2、第n次落地经过总路程 ''' hei = [] #存储的是第一次反弹后的高度 sum = h #第一次着地走过的路程就是初始落下来然后接触到地面 for i in range(1,cnt): #循环计算的是触地的次数,第1次就是索引0已经在上面做了 h = h/2 hei.append(h) #反弹到落地算是一次接触地面 if h ==0: break #计算cnt 着地经过路程 if cnt == 1 : sum =h else: for j in range(len(hei)): #将存储的高度进行遍历 sum = sum + hei[j]*2 #每次都要加上的是弹起加落下的路程的两倍 # print(sum) print('%.2f' % sum) #格式化输出 if __name__=="__main__": m=int(input()) #求几组样例 list1=[] #存储样例数据 for i in range(m): H,n=str(input()).split(" ") list1.append(int(H)) list1.append(int(n)) for i in range(0,2*m,2): weight(list1[i],list1[i+1]) |
执行
1 2 3 4 5 6 7 | 2 #输入的几组测试样例 10 2 #第一组 10m 2次 5 2 #第二组 5m 2次 20.00 #格式化输出 10.00 |