SP9199题解

发布时间 2023-11-24 22:48:17作者: Xu_dh

考察了小学奥数知识,不会的请先去学习一下相遇与追及。

思路

两个人相遇的点一定是有周期性的,我们可以先算出一个周期会走多远,而这个距离是两人速度的最小公倍数。

接着需分情况讨论。

  • 如果两人是同向,则为追及,需用距离除以一人的速度减去距离除以另一人的速度。需要取绝对值。

  • 如果两人是反向,则为相遇,需用距离除以一人的速度加上距离除以另一人的速度。

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;
}