问题描述
有一长方形,长为 343720 单位长度,宽为 233333 单位长度。在其内部左上角顶点有一小球 (无视其体积),其初速度如图所示且保持运动速率不变,分解到长宽两个方向上的速率之比为 dx:dy=15:17。小球碰到长方形的边框时会发生反弹,每次反弹的入射角与反射角相等,因此小球会改变方向且保持速率不变(如果小球刚好射向角落,则按入射方向原路返回)。从小球出发到其第一次回到左上角顶点这段时间里,小球运动的路程为多少单位长度?答案四舍五入保留两位小数。
思路:
将边看作镜面,发生碰撞时,镜中世界小球依旧沿着原方向前进移动
所以小球达到了某个镜中世界的原点,就说明小球回到了原点
#include<iostream>
#include<cmath>
using namespace std;int a = 343720, b = 233333;
long long t= 1; //全局变量,这里必须赋初值为1 int main()
{while(1){if(15*t%a==0 && 17*t%b==0){break;}t++;}long long x = 15*t, y=17*t;double ans = sqrt(15*t*15*t + 17*t*17*t) * 2;printf("%.2lf", ans);return 0;
}