中国剩余定理

Posted wethura

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中国剩余定理相关的知识,希望对你有一定的参考价值。

 

 

技术分享图片
LL exGcd(LL a,LL b,LL &x,LL &y)
{
    if(!b)
    {
        x=1,y=0;
        return a;
    }
    LL d=exGcd(b,a%b,y,x);
    y=y-a/b*x;
    return d;
}

LL chineseRemainder(LL n,LL *a,LL *b)///a是余数,b是模数
{
    LL a1=0,a2,b1=1,b2,x,y,ans=0,gcd;
    for(int i=0;i<n;i++)
    {
        b2=b[i],a2=a[i];
        gcd=exGcd(b1,b2,x,y);
        if((a1-a2)%gcd)
            ans=-1;
        else
        {
            x=x*((a1-a2)/gcd);
            x=x%(b2/gcd);

            a1=a1-x*b1;
            b1=b1/gcd*b2;
            a1=a1%b1;
        }
    }
    if(ans!=-1)
        ans=(a1%b1+b1)%b1;
    if(!ans)
        ans=b1;
    return ans;
}
View Code

 

笔记:

  里面有一个 gcd 的参数,他所代表的意义就是 ax+by 的最小值,之后我就可以根据这个数对 a,b所

  对应的最小值进行翻倍处理就可以得到想要的 c 值,如果 c % gcd != 0 则表示函数没有解。

以上是关于中国剩余定理的主要内容,如果未能解决你的问题,请参考以下文章

中国剩余定理

简述中国剩余定理

中国剩余定理过程

什么叫中国剩余定理

中国剩余定理与扩展中国剩余定理

中国剩余定理公式是啥?