您的位置:首页 > 其它

UVA - 10387 Billiard

2014-12-20 18:26 176 查看
题目链接

在台球桌上,有一个球在桌中心与水平线成一个角度以一定的初速度发射出去,最后返回了出发点,给出经过的时间,和碰撞水平线的次数和垂直线的次数,求球初始的角度与初速度。球所做的是弹性碰撞,没有动能损失。

初一看,这题不太好做,需要思考,但是可以想到,球既然回到了初始点,并且速度不变,那么经过的总的水平距离应该就是碰撞垂直线的次数×水平线的长度(来回)a*m,同理经过的总的垂直距离等于碰撞水平线的次数乘以垂直线的长度b*n。 这样总的距离可以用勾股定理求出,并且已知时间,就可以求出速度。弧度就是 atan(b*n/a*m) 在转换成角度。

#include<cstdio>
#include<cmath>
#define pi acos(-1)
int main()
{
int a,b,s,m,n;
while(~scanf("%d%d%d%d%d",&a,&b,&s,&m,&n)&&a+b+s+m+n)
{
double aa=a*m,bb=b*n,c,d;
c=atan(bb/aa)/pi*180;
d=sqrt(bb*bb+aa*aa)/s;
printf("%.2lf %.2lf\n",c,d);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: