扩展欧几里得--好像很重要的样子!!!
度娘百科说:
首先, ax+by = gcd(a, b) 这个公式肯定有解 (( •̀∀•́ )她说根据数论中的相关定理可以证明,反正我信了)
所以 ax+by = gcd(a, b) * k 也肯定有解 (废话,把x和y乘k倍就好了)
所以,这个公式我们写作ax+by = d,(gcd(a, b) | d)
gcd(a, b) | d,表示gcd能整除d,即d是gcd的倍数,这个符号在数学上经常见
证明一下:
那么已知 a,b 求 一组解 x,y 满足 ax+by = gcd(a, b) 这个公式????
int ex_gcd(int a,int b,int &x,int &y) {
if(b==0){
x=1;y=0;
return a;
}
int r=ex_gcd(b, a%b, x, y);
int t=x;
x=y;
y=t-a/b*y;
//cout << x << " " << y << " " << r << endl;
return r;
}
就是这样子的!!!!