码迷,mamicode.com
首页 > 其他好文 > 详细

同余问题

时间:2019-10-18 22:11:38      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:idt   拓展   要求   return   turn   部分   width   求逆   oid   

同余问题

同余问题数论问题中很重要的一部分

欧几里得算法

int gcd(int a,int b){
    if(!b) return a;
    return gcd(b,a%b);
}

拓展欧几里得算法

void exgcd(int a,int b,int x,int y,int &gcd){
    if(!b){
        x=1;y=0;gcd=a;
        return;
    }
  int t=y; exgcd(b,a
%b,x,y,gcd); y=(b-a/b*b)*x; x=t; }

逆元

如果 a*b%p==1 那么a与b互为模p意义下的逆元,那么逆元的作用是什么呢?

n/a%p==n*b%p(可以自行理解)

拓欧求逆元

a*b%p==1 => a*b+k*p==1(用拓展欧几里得可以轻易得到答案)

 

void exgcd(int a,int b,int x,int y,int &gcd){
    if(!b){
        x=1;y=0;gcd=a;
        return;
    }
    exgcd(b,a%b,x,y,gcd);
    int t=y;
    y=(b-a/b*b)*x;
    x=t;
}

int getinv(int a,int p){
    exgcd(a,p,x,y,gcd);
    if(gcd!=1) return -1;
    return (x%p+p)%p
}

 

中国剩余定理

技术图片

中国剩余定理是要求一个满足上述等式的最小值

对于等式一,假设已有 t%m1==a1,如果想要满足所有的等式,则需要 x%m2==0,x%m3==0......

 

同余问题

标签:idt   拓展   要求   return   turn   部分   width   求逆   oid   

原文地址:https://www.cnblogs.com/yulinss/p/11700842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!