贝祖定理
如果
换句话说,如果
有一个直接的应用就是 如果
然而这并不能告诉我们x,y解是多少。
扩展欧几里得(exgcd)
首先对
1 |
|
解释一下 exgcd1()
的递推式。d
是最大公约数,这个在 b=0
,即上一层 a%b==0
时找到,更新传回即可。
我们 x
和 y
都是直接更新地址的,那我们这里的 y
其实就是传给上一层的
x
,相当于
y=x-(a/b)*y
,因为我们传下来的时候是将 x
和
y
颠倒的,那么这里 x
就和 y
互换,即 y-=(a/b)*x
,x
还是
x
,传上去就变成 y
了。
求逆元
上面得到的
注意,一个数的是有可能没有逆元的,需要提前判断,否则这时候
x
好像是返回 x
有可能是负数,这时候你可能需要
x=(x+mod)%mod
。
求不定方程
(我之前没用Markdown写得真难受)
(这个部分是我学了excrt之后才更新的)
(之前学的真是肤浅而且一团乱麻)
exgcd 既然可以求
假设
那就行了。
判断无解的情况:如果求出来的
鉴于不定方程的性质,
1 |
|