有一长方形,长为 343720 单位长度,宽为 233333 单位长度。 在其内部左上角顶点有一小球 (无视其体积),其初速度如图所示且保持运动速率不变,分解到长宽两个方向上的速率之比为 dx:dy=15:17。 小球碰到长方形的边框时会发生反弹,每次反弹的入射角与反射角相等,因此小球会改变方向且保持速率不变(如果小球刚好射向角落,则按入射方向原路返回)。从小球出发到其第一次回到左上角顶点这段时间里,小球运动的路程为多少单位长度?答案四舍五入保留两位小数。
![[Pasted image 20260119121851.png]]
可以把小球每次反弹都投影到一个镜像世界里面
假设lenth=343720,wide=233333
![[未命名绘图.drawio.png]]
我们可以观察到原点在镜像世界中的投影点满足x为2 * lenth的整数倍数,y为2 * wide的整数倍数。小球每时每刻沿直线运动在x和y轴上的分量都满足15:17。
枚举t从1到正无穷,使得小球在t时刻的x和y运动分量满足到达原点所要求的条件。

#include<iostream>
#include<cmath>
using namespace std;
int main(){
int dx=15,dy=17,wide=2*233333,lenth=2*343720;
for(int t=1;;t++)
{
if(t*dx%lenth==0&&t*dy%wide==0)
{
cout.precision(2);
cout<<fixed<<hypot(t*dx,t*dy);
break;
}
}
}