扩展欧几里得是用来求ax+by=gcd(a,b)的一组解(x,y)
void e_gcd(int a,int b,int &d,int &x,int &y)
{
if(!b){d=a;x=1;y=0;}
else{e_gcd(b,a%b,d,y,x);y-=x*(a/b);}
}
如果想再求一组解怎么办呢,我们令这组解(x2,y2)
则ax2+by2=gcd(a,b);
则可得ax2+by2=ax+by;
则a(x2-x)=b(y-y2);令g=gcd(a,b),等式两边同时除以g得a'(x2-x)=b'(y-y2);
此时a',b'互质所以有(x2-x)为b'得整数倍,(y-y2)为a'的整数倍。
所以x2=k*b'+x,y2=y-ka';