RT,开 O2 全部 MLE,不开AC?
#include<iostream>
#include<algorithm>
using namespace std;
#define ll __int128
inline ll read()
{
ll s=0;
char ch=getchar();
while(ch<'0' || ch>'9') ch=getchar();
while(ch>='0' && ch<='9') s=s*10+ch-'0',ch=getchar();
return s;
}
inline ll write(ll x)
{
if(x>9)
{
write(x/10);
x%=10;
}
putchar((int)x+'0');
}
ll _abs(ll x)
{
if(x<0) x=-x;
return x;
}
int n;
ll exgcd(ll a,ll b,ll &x,ll &y)
{
if(!b)
{
x=1,y=0;
return a;
}
ll g=exgcd(b,a%b,x,y);
ll t=x;
x=y;
y=t-a/b*y;
return g;
}
ll lcm(ll x,ll y)
{
ll t1,t2;
return x/_abs(exgcd(x,y,t1,t2))*y;
}
int main()
{
cin>>n;
ll a1=read(),m1=read();
for(int i=2;i<=n;i++)
{
ll a2=read(),m2=read(),k1,k2;
ll gcd=exgcd(a1,-a2,k1,k2);
ll mm=_abs(a2/gcd);
k1*=(m2-m1)/gcd;
k1=(k1%mm+mm)%mm;
m1+=k1*a1;
a1=lcm(a1,a2);
}
write(m1%a1);
return 0;
}