Dis 先生和 Aster 先生是 Fiasco Iron Works 的机械工程师。他们被指派为自动手推车设计道路,将铁矿石运送到冶炼厂。他们应该为自动手推车建造两条圆形道路。然而,Dis 先生和 Aster 先生错误地使圆形道路彼此相切(即两条圆形路径在一点相互接触)。
每天早上 0800 时,电车从相切点开始,并在各自的轨道上顺时针移动。很明显,在某些时候,手推车会在它们开始的地方发生碰撞。为了挽救手推车和对工厂运营造成的损害,工厂的总工程师要求您编写一个程序,该程序会在碰撞前 10 秒发出警报,以便工头可以停止手推车为了避免碰撞。编写一个程序来找出在警报器响起之前经过的时间(以秒为单位)。
public static int timeLapsed(int perimeter1, int speed1, int perimeter2, int speed2) {
int greater,smaller;
int result = 0;
if(perimeter1 > perimeter2) {
greater = perimeter1;
smaller = perimeter2;
} else {
greater = perimeter2;
smaller = perimeter1;
}
for(int i=1;i<=smaller;i++) {
if(((greater*i)%smaller)==0) {
result = greater*i;
break;
}
}
return result/speed1-10;
}
在这里,我试图计算碰撞前的距离,这基本上是 LCM 操作,然后除以速度。但这对于某些情况来说是失败的。请帮助我理解为什么。