#计算小球走过的路程和反弹高度
###思路
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;
}