高中数学 算法初步题 求秒

来源:百度知道 编辑:UC知道 时间:2024/06/01 03:38:48
一个球从100M高度自由落下,每次落地后反弹回原来高度的一半,再落下。编写程序,求当它第10次找地时。
(1)向下的运动共经过多少米?
(2)第10次着地后反弹多高?
(3)全程共经过多少米?

要编写程序的,我当时高中没有这块内容,邻居来问我全然不知,高分找帮忙

我用c++实现的
#include<iostream>
using std::cout;
using std::endl;
class Freefall
{
public:
Freefall(double x=0,int y=0):height(x),time(y){}
void get_result();
void view();
private:
double height;
int time;
};
void Freefall::view()
{
cout<<height<<endl;
cout<<time<<endl;
}
void Freefall::get_result()
{
int i=0;
double S_total=0,S_down=0,S_recent=0,N_time=0;
S_recent=height;
N_time=(time-1)*2+1;
for(i=0;i!=N_time;++i)
{
S_total+=S_recent;
if(i%2==0)
{
S_down+=S_recent;
S_recent=S_recent/2;
}
}
cout<<S_down<<endl;
cout<<S_recent<<endl;
cout<<S_total<<endl;
}
int main()
{
Freefall T(100,10);
T.get_result();
return 0;
}

就是个等比数列呗,
第一问,等比数列求和,设落地次数为n,推出L=200*[1-(1/2)^n],(n>=1,n属于整数)其中题目里是n=10的情况,所以把10带到式