exgcd详解
1.exgcd是什么?
exgcd大名扩展欧几里得算法,用来求形如 \(\gcd(a,b) = ax + by\) 的方程的通解。
2.推导
引理:存在 \(x,y\in \mathbb Z\) 使得 \(\gcd(a,b) = ax + by\)(裴蜀定理,请自行百度)
当 \(b=0\) 时,\(\gcd(a,b)=a\),此时 \(x_1=1\), \(y_1=0\)
当 \(b\not=0\) 时,
由题,\(ax+by=\gcd(a,b)=\gcd(b,a\bmod b)=bx_2+(a\bmod b)y_2 ①\)
又因 \(a\bmod b=a-\lfloor \dfrac{a}{b}\rfloor b\)
则 \(ax+by=bx_2+(a-a\lfloor \dfrac{a}{b}\rfloor b)y_2\)
\(ax+by=bx_2+ay_2-\lfloor \dfrac{a}{b} \rfloor by_2\)
\(ax+by=ay_2+bx_2-b\lfloor \dfrac{a}{b} \rfloor y_2\)
\(ax+by=ay_2+b(x_2-\lfloor \dfrac{a}{b} \rfloor y_2) ②\)
将 \(②\) 式对比 \(①\) 式,得出:
方程 \(\gcd(a,b) = ax + by\) 的通解为 \(x=y_2\) , \(y=x_2-\lfloor \dfrac{a}{b} \rfloor y_2\)
//公式是我一个字一个字手敲的,要敲断了……
3.代码实现
void exgcd(int &x,int &y,int a,int b)
{
if(!b)
{
x=1;
y=0;
return;
}
exgcd(x,y,b,a%b);
int t=x;
x=y;
y=t-a/b*y;
}
exgcd详解的更多相关文章
- 扩展欧几里得(exgcd)与同余详解
exgcd入门以及同余基础 gcd,欧几里得的智慧结晶,信息竞赛的重要算法,数论的...(编不下去了 讲exgcd之前,我们先普及一下同余的性质: 若,那么 若,,且p1,p2互质, 有了这三个式子, ...
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
随机推荐
- Windows7 wampServer3.0.6 Mutillidae2.7.12
在Mac上访问虚拟机中的mutillidae,报403: By default, Mutillidae only allow access from localhost ***: Parallels ...
- Vue简介-MVVM是什么?
Vue.js - Day1 课程介绍 前5天: 都在学习Vue基本的语法和概念:打包工具 Webpack , Gulp 后5天: 以项目驱动教学: 什么是Vue.js Vue.js 是目前最火的一个前 ...
- js默认字符处理
utf-16 每个字符是2个字节 超过2字节,就是4个字节表示
- arm linux 移植 python3.6
背景: 人生苦短,我用Python. 说明: 编译Python的嵌入式版需要解释器解析setup.py从而编译Python的模块,因此需要先编译出host的解释器.(有点像Go语言) Python : ...
- PCHMI工控组态开发视频教程
PCHMI是一款适合所有PLC工程师快速上手工控组态开发的控件 下面是视频教程链接 PCHMI工控组态 02-按钮的使用 PCHMI工控组态 03-数据显示器使用 PCHMI工控组态 04-标签控件的 ...
- XtraReport1添加参数
解决了在report有个BeforePrint事件这里面直接 C# code ? 1 string year = this.Parameters["year"].Value.T ...
- R语言 方差稳定化变换与线性变换 《回归分析与线性统计模型》page96
> rm(list = ls()) > A=read.csv("data96.csv") > A Y N 1 11 0.0950 2 7 0.1920 3 7 0 ...
- Day6 - 牛客102C
链接:https://ac.nowcoder.com/acm/contest/102/C来源:牛客网 题目描述 We define a value of an interval is the seco ...
- 007、MySQL日期取当前时间,取昨天
#取今天文本格式 SELECT DATE_SUB( curdate( ), INTERVAL DAY ); #取昨天文本格式 SELECT DATE_SUB( curdate( ), INTERVAL ...
- F. Fairness 分硬币最大差值最小
F. Fairness time limit per test 2.0 s memory limit per test 64 MB input standard input output standa ...