ax+by=gcd(a,b)的解
//ax+by=gcd(a,b)的一个解
int exgcd(int a,int b,int& x,int& y){
if(b==0){
x=1,y=0;
return a;
}
int gcd=exgcd(b,a%b,x,y,);
int temp=x;
x=y;
y=temp-(a/b)*y;
return gcd;
}
所有解:
设
一
个
解
为
x
0
,
y
0
,
a
∗
x
0
+
b
∗
y
0
=
g
c
d
;
设一个解为x_0,y_0,a*x_0+b*y_0=gcd;
设一个解为x0,y0,a∗x0+b∗y0=gcd;
$设其他解为x_0+s_1,y_0+s_2,带入ax+by=gcd
联
立
上
面
方
程
得
联立上面方程得
联立上面方程得
s
1
s
2
=
b
a
=
b
g
c
d
/
a
g
c
d
\frac{s_1}{s_2}=\frac{b}{a}=\frac{b}{gcd}/\frac{a}{gcd}
s2s1=ab=gcdb/gcda$
所
有
解
为
:
所有解为:
所有解为:
x
=
x
0
+
b
g
c
d
∗
K
x=x_0+\frac{b}{gcd}*K
x=x0+gcdb∗K
y
=
y
0
+
a
g
c
d
∗
K
y=y_0+\frac{a}{gcd}*K
y=y0+gcda∗K
ax+by=c的解
设
a
∗
x
+
b
∗
y
=
g
c
d
的
一
个
解
为
x
0
,
y
0
,
两
边
同
乘
c
g
c
d
得
一
个
解
为
设a*x+b*y=gcd的一个解为x_0,y_0,两边同乘\frac{c}{gcd}得一个解为
设a∗x+b∗y=gcd的一个解为x0,y0,两边同乘gcdc得一个解为
x
1
=
x_1=
x1=