1085:球弹跳高度的计算
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 55292 通过数: 30250
【题目描述】
一球从某一高度hh落下(单位米),每次落地后反跳回原来高度的一半,再落下。编程计算气球在第10次落地时,共经过多少米? 第10次反弹多高?
输出包含两行,第1行:到球第10次落地时,一共经过的米数。第2行:第10次弹跳的高度。
【输入】
输入一个整数hh,表示球的初始高度。
【输出】
第1行:到球第10次落地时,一共经过的米数。
第2行:第10次弹跳的高度。
注意:结果可能是实数,结果用double
类型保存。
提示:输出时不需要对精度特殊控制,用cout << ANSWER
,或者printf("\%g",ANSWER)
即可。
分析:可以自己在纸上计算一下每次弹起前后球的高度变化,就能得到规律了。
#include<iostream>
using namespace std;
int main()
{
double h;
cin >> h;
double height = h;//记录每次弹起的高度
double sumOfHeight = 0;//记录总路程
for (int i = 1; i <= 10;++i)
//循环10次,就是弹起十次
{
if (i == 1)
{
sumOfHeight += height;
//第一次落地时和后面的规律不一致
}
else
{
//后面每次落地间隔的路程都是上一次弹起后的高度的两倍
sumOfHeight += 2*height;
}
height = height / 2;
//每次落地,小球能够弹起的高度都会减半
}
cout << sumOfHeight << endl << height;
}