题解: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;
}

posted @ 2024-10-19 08:56  cly312  阅读(16)  评论(0)    收藏  举报