厌 氧 程 序
查看原帖
厌 氧 程 序
228778
H2O_TX楼主2022/5/29 16:07

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;
}
2022/5/29 16:07
加载中...