丢人选手复习exgcd//19/07/17

我会了,过几个月忘了,有什么好说的......

exgcd就是在gcd上往回传系数,

这里写一下系数式子

有gcd(a,b) = xa+yb;

有gcd(b,a%b) = x'b+y'(a%b);

有gcd(a,b) = gcd(b,a%b)

则xa+yb = x'b+y'(a%b);

则xa+yb = x'b+y'(a-b*(a/b);

   xa+yb = x'b+y'a-y'*b*(a/b);

   xa+yb = y'a+(x'-y'(a/b))*b

则得到了

   x = y'     y = (x'-y'(a/b));

代码(终于自己写一回了)

long long exgcd(long long a,long long b){
    if(b==0){
        x=1,y=0;
        return a;
    }
    long long ret = exgcd(b,a%b);
    int xx=x,yy=y;
    x=yy;
    y=xx-(a/b)*yy;
    return ret;
}

TAG : SIN_XIII  ⑨

posted @ 2019-07-17 09:47  SIN_XIII  阅读(114)  评论(0编辑  收藏  举报