扩展欧几里德算法是用来在已知a, b求解一组{x,y}
使它们满足贝祖等式: ax+by = gcd(a, b) =d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。
emm.这东西唯一给我的感觉,,好难啊。,,我只学过一点点高中数学、
然后死命的脑补了一下。思考了一段时间。
emmm。终于弄懂了一点
上代码
int exgcd(int a,int b,int &x,int &y){
if (b==0){
x=1,y=0;
return a;
}
int d=exgcd(b,a%b,y,x);
y-=a/b*x;
return d;
}
且当ax+by = gcd(a, b)
当b=0时
gcd(a,0)=a
原式=> ax=a
解得x=1
y值不固定(因为我们只要一组存在的解,所以就当y=0)
然后随便转移一下,递归一下,就好了。