#include<bits/stdc++.h>
using namespace std;
unordered_map<int,int> arr;
bool issuc=false;
int main(){
int a,b,c,d;
cin>>a>>b>>c>>d;
int x=b,y=d,i;
for(i=0;abs(x-y)<10000;i++){
x=b+i*a;
y=d+i*c;
if(!arr.count(x)){
arr[x]=1;
}
else{
cout<<x;
issuc=true;
break;
}
if(!arr.count(y)){
arr[y]=1;
}
else{
cout<<y;
issuc=true;
break;
}
}
if(!issuc){
if(x<y){
for(int j=i;x<=y;j++){
x=b+j*a;
if(arr.count(x)){
cout<<x;
issuc=true;
break;
}
}
}
else{
for(int j=i;y<=x;j++){
y=d+j*c;
if(arr.count(x)){
cout<<y;
issuc=true;
break;
}
}
}
}
if(!issuc){
cout<<"-1";
}
return 0;
}
AcWing 4379. 两个闹钟(数论)
于 2022-03-28 15:32:34 首次发布