皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少? 输入格式: 输入在一行中给出两个非负整数,分别是皮球的初始高度和n,均在长整型范围内。 输出格式: 在一行中顺序输出皮球第n次落地时在空中经过的距离、以及第n次反弹的高度,其间以一个空格分隔,保留一位小数。题目保证计算结果不超过双精度范围。
时间: 2023-05-31 13:17:49 浏览: 321
### 回答1:
假设皮球初始高度为h,第n次落地时的高度为hn,第n次反弹的高度为hn+1,则有:
hn = h / 2^(n-1)
hn+1 = hn / 2 = h / 2^n
第n次落地时,皮球经过的距离为:
s = h + 2hn + 2hn-1 + ... + 2h
= h(1 + 2 + 2^2 + ... + 2^(n-1))
= h(2^n - 1)
第n次反弹的高度为hn+1,即:
hn+1 = h / 2^n
因此,皮球第n次落地时在空中经过的距离为h(2^n - 1),第n次反弹的高度为h / 2^n。
代码如下:
### 回答2:
这是一个典型的自由落体反弹问题,解决这个问题首先要知道自由落体的公式:h = 1/2*g*t^2,其中h是高度,g是重力加速度,t是时间。当球触地后反弹到原高度的一半,则下一次落地时球的高度为原高度的1/4。我们可以根据这些信息推导出球每一次自由落体和反弹的高度和时间,最后根据题目要求计算球经过的总距离和第n次反弹的高度即可。
首先,球第一次自由落体的高度为H,所用时间为t1,根据自由落体公式可得:
H = 1/2*g*t1^2
t1 = sqrt(2H/g)
球第一次自由落体的时间为t1,总共经过的距离为S1,根据题意可知,球的落地和反弹算作一次,因此总共经过的距离是第一次自由落体的距离加上第一次反弹的距离:
S1 = 2*H
第一次反弹的高度为h1,根据题意可知:
h1 = H/2
球第二次自由落体的高度为h1,所用时间为t2,根据自由落体公式可得:
h1 = 1/2*g*t2^2
t2 = sqrt(2*h1/g)
球第二次自由落体的时间为t2,总共经过的距离为S2,根据题意可知,球的落地和反弹算作一次,因此总共经过的距离是第二次自由落体的距离加上第二次反弹的距离:
S2 = S1 + 2*h1 = 2*H + 2*h1
第二次反弹的高度为h2,根据题意可知:
h2 = h1/2 = H/4
以此类推,球第n次落地所用的时间为tn,总共经过的距离为Sn,第n次反弹的高度为hn,可以依次计算:
tn = sqrt(2*hn/g)
hn = H/2^(n-1)
Sn = Sn-1 + 2*hn = 2*H*(1-1/2^n)
最终输出第n次落地时在空中经过的距离和第n次反弹的高度,代码如下:
### 回答3:
解题思路:
这是一道简单的数学问题。观察下图:
![](https://cdn.luogu.com.cn/upload/image_hosting/qd74xr4l.png)
可以发现,每当球落地一次,球上升到达的最高点都会比上一次低一半。
因此,球从第 n−1 次反弹的高度下落后,反弹到第n次反弹的高度时,它的高度是原来的二分之一,即:
$$
h_n=\frac{h_{n-1}}{2}
$$
根据物理公式,球从某一高度自由下落,再弹起来,上升到高度 h 后又自由落下,所经历的距离为:
$$
l=2h \sqrt{\frac{h}{2g}}
$$
因此,第 n 次落地时,前 n−1 次落地时球经过的距离和为:
$$
l_{n-1}=2(h_0+h_1+h_2+...+h_{n-2}) \sqrt{\frac{h_{n-1}}{2g}}
$$
第 n 次反弹的高度为 $h_n$,经过的总路程为:
$$
l_n=l_{n-1}+2h_n \sqrt{\frac{h_n}{2g}}
$$
可以用递归进行计算。
注意:调用 pow 函数进行计算时,注意将被乘数转为 double 类型或利用位运算求平方。因为 pow 函数会返回浮点数类型,会丢失精度,产生误差。
代码实现:
阅读全文