水平长度a,垂直高度b;经过m次垂直边上的反弹和n次水平边上的反弹后历时s秒回到出发点。一个球从桌的正中间发射,求发射时的角度(0-90度之间)和球的初始速度。运动期间无能量损失,把球看成一个质点。
结果精确到小数点后两位。
方法:用(b*n)/(a*m)其实就是发射角度的正切值,因为b*n是用桌子的垂直高度*水平碰撞的次数,水平碰撞两次说明求从上边到了下边,即走的长度是b*n/2,因为上下都有/2,所以上下同时约掉了。也正因此——a,b都是偶数。
注意角度与弧度的转换~~~~~~
#include <iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main()
{
int a,b,n,m;
double t;
while(cin>>a>>b>>t>>m>>n,a+b+n+m)
{
double s=a*m,v=b*n;
double c=atan(v/s)*180/3.141592653;
double ts=sqrt(s*s+v*v);
while(c>90) c-=90;
cout.setf(ios::showpoint);
cout.precision(2);
cout.setf(ios::fixed);
cout<<c<<' '<<ts/t<<endl;
}
return 0;
}