蓝桥杯小球碰撞
思路一:可以将图延伸,网上找的图
这样问题就变成找符合的终点位置。我们通过图发现,终点坐标都是初始x,y的倍数,所以我们枚举所有倍数即可
for(int i=1;;i++)
{
if((i*15)%x==0&&(i*17)%y==0)
{
double xx=sqrt(pow(i*15,2)+pow(i*17,2));
printf("%.2lf",xx);
// cout<<fixed<<setprecision(2)<<xx;
break;
}
思路二进行公式推导
int x=343720
int y=233333
int p,q;//代表小球跑一个来回的次数
设到达终点的时间为t
设最小速度为(因为比值是15/17)
dx=15 dy=17
t*dx=2*p*x
t*dt=2*q*y
我们只要知道任意一个来回就能算出时间t
p/q=dx*y/dy*x
p=dx*y q=dy*x
求他们的最小公倍数就行,为什么因为速度用的就是最小值
m=gcd(q,p)
q/=m,p/=m除以最小公倍数
求出t
路程=t*sqrt(15*15+17*17)