您的位置:首页 > 其它

uva10387

2014-05-03 15:05 295 查看
水平长度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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: