1 条题解

  • 0
    @ 2025-10-8 16:51:14
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    void exgcd(LL a,LL b,LL &d,LL &x,LL &y) 
    {
        if(b==0)d=a,x=1,y=0;
        else
        {
            exgcd(b,a%b,d,y,x);
            y-=(a/b)*x;
        }
    }
    int main()
    {
        LL a1,b1,a2,b2,A,B,X,Y,K,d;
        int n;scanf("%d",&n);
        bool bk=true;
        scanf("%lld%lld",&a1,&b1);
        for(int i=2; i<=n; i++) 
        {
            scanf("%lld%lld",&a2,&b2);
            A=a1;B=a2;K=b2-b1;
            exgcd(A,B,d,X,Y);
            if( K % d!=0) bk=false;
            LL dx=abs(B/d),dy=abs(A/d);
            X= X*(K/d);
            X= ( X % dx+dx)%dx;
            b1= a1*X + b1;
            a1= a1/d * a2;
        }
        if( bk==false) printf("no solution!\n");
        else printf("%lld\n",b1);
        return 0;
    }
    
    • 1

    【模板】中国剩余定理(CRT)/ 曹冲养猪

    信息

    ID
    21
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    105
    已通过
    33
    上传者