题解:SP390 BILLIARD - Billiard
容易得到球在水平方向和垂直方向的总位移分别为 \(am\) 和 \(bn\)。
通过勾股定理计算出从起点到终点的直线距离,然后除以时间 \(s\) 得到速度:$v = \frac{\sqrt{(am)^2 + (bn)^2}}{s} $。
使用反正切函数计算角度:$\tan^{-1}(\frac{bn}{am}) $。
将弧度转换为度数:\(\tan^{-1}(\frac{bn}{am}) \times (\frac{180}{\pi})\)。
代码:
#include <iostream>
#include <cmath>
using namespace std;
const double pi=acos(-1.0);
int main()
{
int a,b,s,m,n;
for(;;)
{
scanf("%d %d %d %d %d",&a,&b,&s,&m,&n);
if (!a) return 0;
double horiz=a*m;
double vert=b*n;
double angle=atan2(vert,horiz)*180.0/pi;
double dist=sqrt(horiz*horiz+vert*vert);
double speed=dist/s;
printf("%.2f %.2f\n",angle,speed);
}
return 0;
}

浙公网安备 33010602011771号