扩展欧几里得定理的运用
首先,先重复一下拓展欧几里得的内容:
对于不全为 0 的整数a、b,一定存在一组解 x,y,使得 ax + by == gcd(a,b)
先说一下这个定理的三个用处(但是小细节点和式子的变形式功能下面再说)
1.求解不定方程
2.求解线性同余方程
3.求解模的逆元
1.求解表达式 = 特解 + 通解
已知有:ax + by = gcd
ax/gcd + by/gcd = 1
acx/gcd + bxy/gcd = c
设 X = xc/gcd Y = yc/gcd
就有了 aX + bY = c (c%gcd == 0)
这样新的式子就有了
我们求 ax + by = d 的一组解为 (x0,y0)
就有 X = x0 + k*b/gcd 成立,对于 Y 同理(下面那日内容会讲)
所以 (x0,y0),为特解,通解为后面的部分
这样就可以求方程 ax + by = d 的所有解了
当然, x0,y0 为最小正整数解
当 a,b 互质时,x0,y0 是一正一负最小值解
2.模线性方程 ax = b (mod n) 求解
ax = b (mod n) 等价于 ax + ny = b (mod n)
这样就可以利用上面的方法对其进行处理,就可以解出相应的x,y值,这里可能只需要x值就可
注意:x值可能为负,所以对 n 取模需要处理 (x + n)%n = x 这样就满足题意
模板题:https://www.luogu.com.cn/
P1082 [NOIP2012 提高组] 同余方程
其他题目推导中间可能会需要用到,知道就好
3.用欧几里德算法求模的逆元ax=1 (mod n)
相信大家也都看出来了,其实求逆元就是求解模线性方程ax≡b (mod n)的一种特殊情况.
当b=1时,同余方程ax≡b (mod n),如果 gcd(a,n)== 1,则方程只有唯一解。在这种情况下,如果 b== 1,同余方程就是 ax=1 (mod n )。
这时要求a与n必须互质,即gcd(a,n)= 1。因为当gcd(a , n) != 1 的时候是没有解的,这也是 ax + by = c 有解的充要条件: c % gcd(a , b) == 0
这时称求出的 x 为 a 的对模 n 乘法的逆元。
对于同余方程 ax= 1(mod n ), gcd(a,n)= 1 的求解就是求解方程ax+ ny= 1,x, y 为整数。
这个可用扩展欧几里德算法求出,原同余方程的唯一解就是用扩展欧几里德算法得出的 x 。
4.其他的小功能(公式推导中会用到)
对于其他功能就多是展开式或变形式,多用于数论题目的推导之中,难点就是数学公式的证明和推导
当然,接下来呢就是,存在一组解满足,一定会有其他的解
如果,ax + by = gcd(a,b) = d,则一定可以满足 x,y为自己的某一个倍数,使得 d|(ax + by) 。(最后面的这个式子表示ax + by 的值能被 d 整除)
上面的意思就是,ax + by 这个拓展定理不仅仅可以求等于 gcd 时,x,y的值,也可以表示有某个x,y 使得 ax1 + by1 = kd(x1 = kx,y1 = ky)
然后根据上面的内容延伸一下,拓展定理还能干什么?
当a,b互质的时候,gcd(a,b) = 1;
则,ax + by = 1(x,y不同时大于零,即 x < 0 或 y < 0)
这样首先 (ax + by)k 这个式子是不是就可以表示所有的数了,这是延伸的第一点
然后呢 ax + by = 1 你想一想,x,y肯定有一个值小于 0,但x,y的值并不固定
你可以想一下,对于二元一次方程 ax + by 来说,x,y随便取值,一定还多组解满足其等于 1
于是就有了这样的推理:
使用exgcd 求出 ax + by = 1 的一组最小解,(x0,y0),x0 或 y0 < 0
(下面内容先表示a,b不互质的情况,互质时仍然满足)
ax0 + by0 = d
gcd(a,b) = d
就有 a(x0 + b/dk) + b(y0 - a/dk) = d (为了满足任意d值,k为任意值)
所以就有了 x = x0 + b/dk,y = y0 - a/d*k
这样是不是满足有多组xi,yi解使得exgcd(a,b) = d 成立
对于a,b互质这种情况来说,ax + by = 1,无论x,y取何值,都存在x 或 y < 0
然后下一个延伸就是 ax + by = d 的通式,d的倍数均成立,就是上面写的内容
例题:https://www.luogu.com.cn/
P3951小凯的疑惑
例题:https://www.luogu.com.cn/
P1516 青蛙的约会