SP9199题解
考察了小学奥数知识,不会的请先去学习一下相遇与追及。
思路
两个人相遇的点一定是有周期性的,我们可以先算出一个周期会走多远,而这个距离是两人速度的最小公倍数。
接着需分情况讨论。
-
如果两人是同向,则为追及,需用距离除以一人的速度减去距离除以另一人的速度。需要取绝对值。
-
如果两人是反向,则为相遇,需用距离除以一人的速度加上距离除以另一人的速度。
AC CODE
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int T,a,b;
cin>>T;
while(T--){
cin>>a>>b;
if((a<=0&&b<=0)||(a>=0&&b>=0)){
a=abs(a);
b=abs(b);
int lcm=a*b/__gcd(a,b);
cout<<abs(lcm/a-lcm/b)<<endl;
}
else{
a=abs(a);
b=abs(b);
int lcm=a*b/__gcd(a,b);
cout<<abs(lcm/a+lcm/b)<<endl;
}
}
return 0;
}