hzu3-Ball in a Dream

Ball in dream

大意:就是给定一个角度,和抛出的速度,计算斜抛运动中水平方向上产生的位移,

每次与地面发生碰撞小球的动能都会减少1/k倍。重力加速度为10米/平方秒,pi取为3.1415926535.

思路:这道题就是一道简单高中的物理练习

V sinθt = 1/2 gt2

得:t = 2V sinθ/g,

则S1 = t V

cosθ= V22sinθcosθ/g = V2sin2θ/g;

因动能每次减少1/k倍

碰撞之后的动能为1/2mV2* 1/k则每次碰撞之后的速度的平方为1/k * V2

由此可得出一个等比数列Sn = V2sin2θ/g *(1/k)n-1

所以Sn前N项就是球在水平方向上的位移。

Sum(Sn) = S1(1-qn)/(1-q)因为题目中要求保留两位小数

所以只需求出S1/(1-q)即可

也就是Sum(Sn) =S1/(1-1/k) = k/(k-1) * V2sin2θ/g

PS: sin2θ的值可以通过math的sin()函数来求,但是此函数的参数不是角度,而是弧度,所以要将角度转化成弧度再传参。

代码:

#include

#include

#include

#include

#include

using namespace std;

const double pi = 3.1415926535;

const int angle = 180;

int main(){

int v,a;

double k;

cin>>v>>a>>k;

printf("%.2lf\n",(k/(k-1))*(v*v*sin(2.0*a/angle*pi)/10));

return 0;

}

你可能感兴趣的:(hzu3-Ball in a Dream)