AcWing 204. 表达整数的奇怪方式
原题链接
中等
作者:
吴鑫
,
2021-02-15 12:56:21
,
所有人可见
,
阅读 308
#include<iostream>
using namespace std;
typedef long long ll;
int n;
ll exgcd(ll a,ll b,ll &x,ll &y){
if(!b){
x=1,y=0;
return a;
}
int d=exgcd(b,a%b,y,x);
y-=a/b*x;
return d;
}
int main(){
cin>>n;
ll x=0,m1,a1;
cin>>m1>>a1;
for(int i=0;i<n-1;i++){
ll m2,a2;
cin>>m2>>a2;
ll k1,k2;
ll d=exgcd(m1,-m2,k1,k2);
if((a2-a1)%d){
x=-1;
break;
}
k1*=(a2-a1)/d;
k1 = (k1% abs(m2/d)+abs(m2/d))%abs(m2/d);
x=k1*m1+a1;
a1=k1*m1+a1;
m1=abs(m1/d*m2);
}
cout << x << endl;
return 0;
}