不知道是不是long long太小,试过开__int128,爆编译错误了,有没有大佬教一下用法也行
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
ll x,y,r;
void fgcd(ll &x,ll &y,ll beichu,ll yu){
if(yu==0) r=beichu,x=1,y=0;
else{
fgcd(y,x,yu,beichu%yu);
y-=beichu/yu*x;
}
}
ll gcd(ll a,ll b){
if(b==0) return a;
else return gcd(b,a%b);
}
ll lcm(ll a,ll b){ return a/gcd(a,b)*b; }
ll a1,a2,b1,b2;
void f(){
fgcd(x,y,a1,a2);
ll k=b2-b1;
x=x*k/r%(a2/r);
if(x<0) x+=a2/r;
ll m=lcm(a1,a2);
b1=(a1*x+b1)%m;
if(b1<0) b1+=m;
a1=m;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
long long a,b;
cin>>a>>b;
a2=a,b2=b;
if(i==1) a1=a2,b1=b2;
else f();
}
cout<<(long long)(b1%a1);
return 0;
}