首页 > 其他 > 详细

扩欧板子+中国剩余定理板子

时间:2019-08-04 14:15:26      阅读:120      评论:0      收藏:0      [点我收藏+]

 

关于扩欧:

这个板子我不想再记不住了,所以我推一遍

求解 ax+by = c;

裴蜀定理 : ax+by=gcd(a,b)一定有解

所以如果 c%gcd!=0 则一定无解

同乘以 d/c  a(d/c*x)+b(d/c*y)=d;

求解的 答案乘上 c/d 就是原来的答案

由 欧几里得 可以得到

(b)x+(a%b)y==gcd(b,a%b)

a%b=a-(a/b)*b

根据多项式的准则

ax+by=d

 

所以 x=y

y=x-(a/b)*y

注意应写成 ex_gcd(b,a%b,y,x)//x=y

y=x-(a/b)*y

 

好了上板子

code:

ll ex_gcd(ll a,ll b ,ll &x,ll &y)
{
    if(b==0)
    {
        x=1;
        y=0;
    }
    else
    {
        ex_gcd(b,a%b,y,x);
        y=y-(a/b)*x;
    }
    return x;
}

 

中国剩余定理:

 

 

技术分享图片

 

最小整数解:

x = (a1*M1*inv(M1) + a2 * M2 * inv(M2) + .... + ai * Mi * inv(Mi) + ... + ak*Mk*inv(Mk))%M;

其中:Mi = M/mi ; inv(Mi) 为 Mi 模 mi 的逆元。

 

求逆_>欧几里得扩展 就好了

费马小定理 的模数必须为质数

扩欧板子+中国剩余定理板子

原文:https://www.cnblogs.com/OIEREDSION/p/11297658.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!