求解a,b的gcd
int gcd(int a,int b){
return b?gcd(b,a%b):a;
}
求解ax+by=gcd(a,b);
int e_gcd(int a,int b,int &x,int &y){
if(!b){
x=1;y=0;
return a;
}
int gcd=e_gcd(b,a%b,y,x);
y-=a/b*x;
return gcd;
}
用扩展欧几里得算法解不定方程ax+by=c
用扩展欧几里德算法求解模线性方程ax≡b (mod n)
int cal(int a,int b,int c){
int x,y;
int gcd=e_gcd(a,b,x,y);
if(c%gcd) return -1;
x*=c/gcd;
b/=gcd;
if(b<0) b=-b;
int ans=x%b;
while(ans<=0) ans+=b;
return ans;
}