题意:在b*a的区域打台球,初始位置在中点,s秒之后,与水平边撞击n次,与垂直边撞击m次,并回到中点,求球的初速度与角度。

题解:球的水平速度设为Vx,那么s秒后水平路程为Vx*s,与垂直边撞击m次又回到中点,由此得到水平路程为m*a,于是Vx*s=m*a,同理Vy*s=n*b,两式联立得答案。

View Code
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 using namespace std;
 5 const double pi=acos(-1.0);
 6 int main()
 7 {
 8     double a,b,s,m,n,v,th;
 9     while(scanf("%lf%lf%lf%lf%lf",&a,&b,&s,&m,&n),(a||b||s||m||n))
10     {
11         th=atan2(n*b,m*a);
12         v=sqrt(m*m*a*a+n*n*b*b)/s;
13         printf("%.2lf %.2lf\n",th*180.0/pi,v);
14     }
15     return 0;
16 }