描述
一球从 h 米高度自由落下,每次落地后反跳回原高度的一半再落下,求它在第 n 次落地时共经过了多少米?第 n 次返弹多高?
输入描述:
输入小球下落的高度和落地的次数(先输入小球初始高度再输入反弹次数)
输出描述:
输出小球第 n 次 落地时经过的距离和第 n 次反弹的高度(保留小数点后1位)
示例1
输入:
100 1
复制输出:
100.0 50.0
示例2
输入:
100 3
复制输出:
250.0 12.5
代码实现:
C++
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
// 下落的高度和落地的次数
double h;
int n;
cin >> h;
cin >> n;
// write your code here......
//下落的总路程
double sum = 0;
for(int i = 1;i <= n;i++){
//第一次下落的距离就是小球的高度
sum+=h;
//当i>1时,也就是小球经过反弹后距离需要加上小球高度的一半;
//此时的h已经是小球高度的一半了
if(i>1){
sum+=h;
}
//反弹的高度为小球高度的一半
h=h/2;
}
cout<<fixed<<setprecision(1)<<sum<<" "<<setprecision(1)<<h;
return 0;
}
测试用例:
输 入: 120 4
预期输出: 330.0 7.5
实际输出: 330.0 7.5