题目
描述
假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?
输入
输入起始高度,int型
输出
分别输出第5次落地时,共经过多少米第5次反弹多高
【去掉小数末尾无效的0】
样例输入
1
样例输出
2.875
0.03125
思路
有趣的一道题
1. 假设落地到弹起算一个周期
2. 因此当计算到第五个周期的时候,表示落了五次地并弹起的距离,此时的高度为第五次反弹的高度。
代码
这样写感觉还行
#include <iostream>
using namespace std;
int main()
{
int initialH=0,times=5;
double pathLength=0.0,height=0.0;
cin>>initialH;
height=initialH;
//times表示次数
while(times!=0)
{
pathLength+=height;//一次落地
height/=2;
pathLength+=height;//一次弹起
times--;
}
cout<<pathLength-height<<endl;
cout<<height<<endl;
return 0;
}