#计算小球走过的路程和反弹高度

###思路

1.小球从h高度落下,然后反弹上去,高度为原高度的一半。走过的路程可以写为 sum = h + h / 2.0。 (这就可以看作一次小球从落地到反弹所走过的路程)

2.重复上述操作,从高度为h = h / 2.0处下落,再反弹。

3.则第n次落地时小球总共所走的路程为for (int i=1;i<=n;i++){sum = sum + h + h / 2.0;}

4.上述中的计算包括了小球第n次落地的反弹高度,由于题目中要求输出的是第n次落地时的路程,所以要减去最后反弹的高度h.

#include #include using namespace std;

int main() {

// 下落的高度和落地的次数
double h,sum=0 ;
int n;

cin >> h;
cin >> n;
for (int i=1;i<=n;i++){  //小球的落地次数
    sum = sum + h + h / 2.0;  // 总共所走的下落与反弹路程
    h=h/2.0; //反弹高度
}
sum = sum - h;  //减去最后一次反弹路程

printf("%.1f %.1f",sum,h);



// write your code here......


return 0;

}