求小球落地5次后所经历的路程和第5次反弹的高度
描述
假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?
最后的误差判断是小数点6位
数据范围:输入的小球初始高度满足1<=n<=1000 ,且保证是一个整数
输入描述:
输入起始高度,int型
输出描述:
分别输出第5次落地时,共经过多少米第5次反弹多高
示例1
输入:
1
输出:
2.875
0.03125
#include<iostream>
//#include"stdio.h"
using namespace std;
//维护两个数组,分别表示第i次弹起高度dp和累计经历长度hp
//dp[0]=1; 设定初始高度
//dp[i]=dp[i-1]/2;
//hp[0]=1; 设定初始长度
//hp[i]=dp[i]*2+hp[i-1];
int main(){
int n;
cin>>n;
//scanf("%d",&n);
double dp[6]={1.0};
double hp[6]={1.0};
for(int i=1;i<6;++i){
dp[i]=dp[i-1]/2.0;
}
for(int i=1;i<5;++i){
hp[i]=hp[i-1]+2.0*dp[i];
}
double sum=hp[4]*n;
double high=dp[5]*n;
cout<<sum<<"\n"<<high<<endl;
//printf("%.6f\n%.6f\n",sum,high);
return 0;
}