文章目录

  • 1.贝祖定理
  • 2.欧几里得定理
  • 3.扩展欧几里得定理
    • 扩展欧几里得解题一般思路
    • 例题

1.贝祖定理

满足方程 ax+by=cax+by=cax+by=c 有解的充分必要条件是 gcd(a,b)∣cgcd(a,b) | cgcd(a,b)∣c

2.欧几里得定理

用辗转相除求a,b的最大公因数

ll gcd(ll a,ll b)
{if(b==0) return a;elsereturn gcd(b,a%b);
}

3.扩展欧几里得定理

扩展欧几里得定理目的是解不定方程

根据题意写出同余方程
ax≡c(modb)ax ≡ c(mod \,b)ax≡c(modb)
根据同余方程写出不定方程
ax+by=cax+by=cax+by=c

用来求方程 ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b) 的特解
进而求出 ax+by=cax+by=cax+by=c 的通解

特解 x0,y0x_0,y_0x0​,y0​
通解
x=x0∗cgcd(a,b)+k∗bgcd(a,b)x=x_0*{c\over gcd(a,b)}+{k*b\over gcd(a,b)}x=x0​∗gcd(a,b)c​+gcd(a,b)k∗b​
y=y0∗cgcd(a,b)−k∗agcd(a,b)y=y_0*{c\over gcd(a,b)}-{k*a\over gcd(a,b)}y=y0​∗gcd(a,b)c​−gcd(a,b)k∗a​
k∈Zk\in Zk∈Z

ll exgcd(ll a,ll b,ll &x,ll &y)
{if(b==0){x=1;y=0;return a;}ll g = exgcd(b,a%b,y,x);y-=a/b*x;return g;
}

这里返回值仍然是 gcd(a,b)gcd(a,b)gcd(a,b) ,在过程中,特解被存储在 x,y 之中根据题意求出所需的解

扩展欧几里得解题一般思路

1.根据题意写出同余方程
ax≡c(modb)ax ≡ c(mod \,b)ax≡c(modb)
2.根据同余方程列出式子
ax+by=cax+by=cax+by=c
带入扩展欧几里得求解
3.求最小整数解
x=(x%b+b)%bx=(x\%b+b)\%bx=(x%b+b)%b(这里 x与bx与bx与b 都是处理过的)
要保证b是正数

扩展欧几里得的难点在于找出同余方程并转化为不定方程

例题

1.P1082 [NOIP2012 提高组] 同余方程
(扩欧板子,求最小整数解)
同余方程题解

2.C Looooops 牛客
(扩欧板子,求最小整数解)
C Looooops 题解

3.Euclid Problem 牛客
(扩欧板子,求最小整数解)

4.青蛙的约会 牛客
(扩欧板子,求最小整数解)
青蛙约会题解

5.Disgruntled Judge 牛客
(扩欧进阶,找不定方程,枚举未知数)
Disgruntled Judge 题解

扩展欧几里得模板+例题相关推荐

  1. Romantic(扩展欧几里得模板)

    裴蜀定理: 任意整数 a, b,(a, b)|d ⇐⇒ ∃ 整数 x, y 使得 ax + by = d,即ax+by=d,那么d一定是gcd(a,b)的倍数 扩展欧几里得定理: 对于两个不全为0的整 ...

  2. 求逆元(线性求逆元)及其扩展欧几里得

    线性求逆元模板: int inv[maxn]; void initInverse(){inv[1] = 1;for(int i = 2; i <= maxn; i++)inv[i] = (p - ...

  3. Codeforces7C 扩展欧几里得

    Line Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit Status ...

  4. qdu 2017级纳新题(扩展欧几里得)

    在你面前撒个娇 哎呦喵喵喵喵喵 Description 我们一起学猫叫 一起喵喵喵喵喵 在你面前撒个娇 哎呦喵喵喵喵喵 我的心脏砰砰跳 迷恋上你的坏笑 你不说爱我我就喵喵喵 每当xjy和hqy一起唱起 ...

  5. [模板]欧几里得算法/扩展欧几里得

    最大公因数(欧几里得算法) $gcd(a,b)=gcd(b\%a,a)$(不一定需要a<b) $gcd(0,b)=b$ 1 inline int gcd(int a,int b){ 2 retu ...

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

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

  7. POJ - 1061 青蛙的约会(扩展欧几里得)

    题目链接:点击查看 题目大意:两只青蛙在一个单向循环数轴上跳动,给出初始位置和每秒跳动的距离以及数轴长度,问是否可以相遇,若能相遇求出最小时间 题目分析:自从第一次接触扩展欧几里得以来已经有半年时间了 ...

  8. 数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法

    打死没想到会在H老师处学懂数论 同余,整除 模运算 埃式筛法 欧拉筛法 最大公约数和最小公倍数 辗转相除法 更相减损术 裴蜀定理 威尔逊定理 费马定理 同余等价类.剩余系.缩系 欧拉函数 欧拉定理 扩 ...

  9. POJ 1061扩展欧几里得

    扩展欧几里得的模板题,需要注意的是为了得到一个最小正数解我们要使ax+by=c中的a,b都是正数 #include<cstdio> #include<cstring> #inc ...

  10. 欧几里得算法扩展欧几里得

    本文包括: 1.几里德算法 递归实现 2.扩展欧几里德算法 递归实现 -实际上就是把别人总结的,我认为有助于自己理解的内容copy过来,再加上几句自己的理解. 欧几里得算法 欧几里德算法又称辗转相除法 ...

最新文章

  1. 最新wingide6破解方法(支持Linux),亲测有效,支持python3.0
  2. CentOS 初体验十二:wget下载文件
  3. ITK:侵蚀灰度图像
  4. docker安装mysql后怎么链接_使用docker安装mysql并连接
  5. linux下jdk源码安装,Linux JDK 源码安装
  6. python三种数据类型_Python-更改Pandas中列的数据类型
  7. cif t t操作流程图_Danish:STATA 操作正态检验、卡方检验和T检验
  8. [导入][凤穿牡丹][2008精品年代剧][全38集][李小冉 应采儿]
  9. 天锐绿盾加密软件支持什么操作系统?
  10. [趣谈网络协议学习] 01 网络分层
  11. webpack—模块化、模块化核心、ESM、其它模块化|概念、安装、使用、打包模块、打包配置、核心配置、深入、Loaders、||Plugins、sourceMap、WebpackDevServer、
  12. VS2010设置快捷键
  13. Maven教程-使用Nexus搭建私服,Java基础视频
  14. ISO14000环境管理体系认证
  15. 顺序结构—— 华氏温度转摄氏温度
  16. githug关卡小游戏,练习git
  17. Java基础案例2-6:登录注册小程序
  18. 如何基于Arduino开发板使用BH1750环境光传感器
  19. oppo计算机怎么添加到桌面,OPPO怎么把快捷方式添加到桌面 OPPO把快捷方式添加到桌面方法...
  20. 将数字上调至8的倍数

热门文章

  1. Wowza服务器系列(3):试用wowza Stream Engine服务运行
  2. 5V升压充电12.6V锂电池方案
  3. 计算机专业保研面试备考:计算机算法(必看)
  4. java8新特性有哪些
  5. mysql 计算15位身份证_15位身份证补全为18位身份证算法
  6. iTextSharp 显示中文字体
  7. 赤峰中考计算机考试软件,2017年内蒙古赤峰中考信息技术操作考试实施细则
  8. 基于ARMA模型的客流预测
  9. iir滤波器c语言程序,请教C语言做iir滤波器问题
  10. linux网络串口工具下载,串口调试工具手机版下载