欧几里得
LL gcd(LL a,LL b){
if(!b) return a;
return gcd(b,a%b);
}
扩展欧几里得
ax+by=c
a
x
+
b
y
=
c
有解的充要条件是
gcd(a,b)|c
g
c
d
(
a
,
b
)
|
c
解方程:
ax+by=1
a
x
+
b
y
=
1
求a的乘法逆元
ax≡1(mod m)
a
x
≡
1
(
m
o
d
m
)
等价于
ax=1+my
a
x
=
1
+
m
y
即
ax+my=1
a
x
+
m
y
=
1
void exgcd(LL a,LL b,LL &x,LL &y){
if(!b){x=1; y=0; return ;}
exgcd(b,a%b,x,y);
LL t=x; x=y; y=t-a/b*y;
}
lucas定理