扩展欧几里得定理的运用
首先,先重复一下拓展欧几里得的内容:
对于不全为 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/d
k) + b(y0 - a/dk) = d (为了满足任意d值,k为任意值)
所以就有了 x = x0 + b/d
k,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 青蛙的约会

数论导图(中等)

拓展欧几里得定理的应用相关推荐

  1. 数学--数论--欧几里得定理和拓展欧几里得定理

    欧几里得定理: gcd(a, b) = gcd(b, a%b) 证明: 我们首先约定:m = gcd(a,b) , n = gcd(b, q) , a = b*p +q.(这里的gcd含义跟上面一样, ...

  2. 关于欧几里得定理和拓展欧几里得定理的理解 续

    前言 在我大一刚开始ACM的时候,写过一篇关于欧几里得定理理解的博客,这几天因为再次用到欧几里得定理,所以又转回去看了看,感觉自己以前写的不是很清楚,所以决定再写一篇关于欧几里得定理以及拓展欧几里得定 ...

  3. 从欧几里得到拓展欧几里得

    欧几里得定理: 公式表述 gcd(a,b)=gcd(b,a mod b) 证明:a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个 公约数,则有 d|a, d|b,而r ...

  4. 拓展欧几里得+例题~

    扩展欧几里德算法: 应用: ①求解不定方程 ②求解同余方程 ③求解模的逆元 看欧拉定理看吐了也还是有超级~~多的题目不会做,看的有晕又困!难受,看会别的压压惊~~希望拓展欧几里德的题目能对我稍稍稍稍稍 ...

  5. 扩展欧几里得定理总结

    拓展欧几里得定理主要用来求解同余线性方程,求逆元等,遇到题目给出形如ax+by==c,要求一组满足要求的x和y时,可以联系扩展欧几里得求解 拓展欧几里得由 gcd(a,b) = gcd(b,a%b) ...

  6. 欧几里得定理 及 拓展欧几里得 小结

    [欧几里得定理] 定义: gcd ⁡ ( a , b ) = gcd ⁡ ( b , a m o d    b ) \gcd(a,b)=\gcd(b,a\mod b) gcd(a,b)=gcd(b,a ...

  7. 拓展欧几里得模板/求逆元模板(java)

    拓展欧几里得模板 参考:哈尔滨理工大学ACM培训资料汇编/ACM-ICPC培训资料汇编* 基本原理 :设 a 和 b 不全为 0,则存在整数 x,y 使得 xa yb=gcd(a,b)=c 对于辗转相 ...

  8. A/B HDU - 1576 (逆元或拓展欧几里得或数学公式)多解法求大数结果

    题意:求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1). 思维:(1)逆元+扩展欧几里得算法:满足a*k≡1 (mo ...

  9. AcWing 878. 线性同余方程(拓展欧几里得)

    题目链接 https://www.acwing.com/problem/content/880/ 思路 ai×xi≡bi(modmi)a_i\times x_i≡b_i(mod \ m_i)ai​×x ...

最新文章

  1. 字符串 编码转换 ATL
  2. Struts2中Action访问Servlet API的三种方法
  3. mysql 中文列索引_MYSQL多列索引
  4. mysql改了排序规则不生效_Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题...
  5. linux php pdo server,linux服务器用PHP的PDO链接myql方法(php pdo)
  6. Linux虚拟化KVM-Qemu分析(一)
  7. 全向轮机器人运动模型及应用分析
  8. jupyter 导入文件路径_更改jupyter notebook默认存储路径
  9. 生成式对抗网络GAN汇总
  10. 蚂蚁算法matlab
  11. Xilinx_JESD204B
  12. 快速理解和掌握MIB
  13. 称重传感器(体脂体重模块)应用及特点
  14. App测试流程及测试点(个人整理版)-转
  15. PHP+Mysql——博客系统(前端+后端-整套源码)
  16. 幼儿园教学方案植树节
  17. 前端展示图片-处理图片拉伸
  18. 风吹雪支付系统易支付去后台验证版本代理系统
  19. HDFS的API简单操作源码
  20. 方向向量转欧拉角_【姿态表示】旋转向量、旋转矩阵、欧拉角、四元数

热门文章

  1. 这些年,我爬过的 Android 坑 | 持续更新
  2. 一个Java小白面试得力集团的收获总结
  3. c语言程序运行环境实验报告,程序的运行环境实验报告.doc
  4. 许单单肩负的担当:做错了的认,考虑不周也得认
  5. 动态规划法求解最大连续子序列和问题
  6. 走进JavaWeb技术世界2:JSP与Servlet的曾经与现在
  7. 游戏蓝牙耳机什么牌子好?游戏蓝牙耳机性价比品牌
  8. Delphi XE10.1 Andriod APP中文名称。
  9. vue 组件递归(组件自己调用自己)
  10. [20081226更新(加了日文版本支持)]一个JavaScript WEB日历控件,支持IE6,FireFox,可支持不同语言版本,目前支持中文简繁,英,日语