求小球落地5次后所经历的路程和第5次反弹的高度
描述
假设有一个小球从 hh 米高度自由落下,我们不考虑真实的物理模型,而是简洁的假定,该小球每次落地后会反弹回原高度的一半;再落下,再反弹;……。
求小球在第五次落地时所经历的路程和第五次反弹的高度。
在本题中,路程的计算仅需考虑垂直方向的变化。
输入描述:
在一行上输入一个整数 h(1≦h≦103)h(1≦h≦103) 代表小球的初始高度。
输出描述:
第一行输出一个实数,代表小球在第五次落地时所经历的路程。
第二行输出一个实数,代表第五次反弹的高度。
输入:1
输出:2.875
0.03125说明:
第一次反弹高度为
0.5 米,第二次反弹高度为
0.25 米,第三次反弹高度为
0.125 米,第四次反弹高度为
0.0625 米,第五次反弹高度为
0.03125 米。
截止第五次落地,总路程为
1+2×(0.5+0.25+0.125+0.0625)=2.875 米。
import sys
def h_cm(n):h = n/2return h
for line in sys.stdin:a = line.split()h = int(a[0])h_ = hl = []for i in range(5):h_ = h_cm(h_)l.append(h_)sum_h = h + 2*sum(l[:-1])print(sum_h)print(l[-1])
称砝码
描述
现有n种砝码,重量互不相等,分别为 m1,m2,m3…mn ;
每种砝码对应的数量为 x1,x2,x3...xn 。现在要用这些砝码去称物体的重量(放在同一侧),问能称出多少种不同的重量。
注:
称重重量包括 0
数据范围:每组输入数据满足 1≤n≤10 1≤n≤10 , 1≤mi≤2000 1≤mi≤2000 , 1≤xi≤10 1≤xi≤10
输入描述:
对于每组测试数据:
第一行:n --- 砝码的种数(范围[1,10])
第二行:m1 m2 m3 ... mn --- 每种砝码的重量(范围[1,2000])
第三行:x1 x2 x3 .... xn --- 每种砝码对应的数量(范围[1,10])
输出描述:
利用给定的砝码可以称出的不同的重量数
输入:2
1 2
2 1输出:5说明:
可以表示出0,1,2,3,4五种重量。
import sys
l = []
for line in sys.stdin:a = line.split()l.append(a)
w = [int(i) for i in l[1]]
n = [int(i) for i in l[2]]
m = int(l[0][0])
n_m = {0}
for i,j in zip(w,n):current_w= set()for j_ in range(1,j+1): ##遍历每个砝码从1到相应最大值的数量for w in n_m: #与已有重量组合current_w.add(w + j_ * i)n_m.update(current_w)print(len(n_m))