我会了,过几个月忘了,有什么好说的......
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 ⑨