欧几里得算法

又称辗转相除法

迭代求两数 gcd 的做法

由 (a,b) = (a,ka+b) 的性质:gcd(a,b) = gcd(b,a mod b)

 int gcd(int a,int b){
if(b==) return a;
return gcd(b,a%b);
}

O(logn)

裴蜀定理:

设 (a,b) = d,则对任意整数 x,y,有 d|(ax+by) 成立;

特别地,一定存在 x,y 满足 ax+by = d

等价的表述:不定方程 ax+by = c(a,b,c 为整数) 有解的充要条件为 (a,b)|c

推论:a,b 互质等价于 ax+by = 1 有解

扩展欧几里德算法

考虑如何求得 ax+by = d 的一个解。

这里 d = (a,b)

考虑使用欧几里德算法的思想,

令 a = bq+r,其中 r = a%b;

设求出 bx+ry = d 的一个解为 x = x0,y = y0,

我们可以知道gcd(a,b)最后一定会变成gcd(d,0)

所以ax + by = d     =>    dx0 + 0y0 = d

所以x0 = 1,y0 = 任何数;

考虑如何把它变形成 ax + by = d 的解。

将 a = bq+r 代入 ax + by = d,

化简得 b(xq+y) +rx = d

我们令 xq+y = x0,x = y0,

则上式成立 故 x = y0,y = x0 −y0q 为 ax+by = d 的解

边界情况:b = 0 时,令 x = 1,y = 0 //不知道为啥y=0;qwq

 void exgcd(int a,int b,int &x,int &y){
if(b==){
x=,y=;
return;
}
int q=a/b,r=a%b;
exgcd(b,r,y,x);
y-=q*x;
}

先用 exgcd 求出任意一个解 x = x0,y = y0

再求出 ax+by = 0 的最小的解 x = dx = b/(a,b),y = dy = −a/(a,b)

所有解就是 x = x0 +kdx,y = y0 +kdy,

k 取任意整数

欧几里得算法(gcd) 裴蜀定理 拓展欧几里得算法(exgcd)的更多相关文章

  1. 【初等数论】裴蜀定理&扩展欧几里得算法

    裴蜀定理: 对于\(a,b\in N^*, x, y\in Z\),方程\(ax+by=k\)当且仅当\(gcd(a, b)|k\)时有解. 证明: 必要性显然. 充分性:只需证明当\(k=gcd(a ...

  2. 初等数论-Base-2(扩展欧几里得算法,同余,线性同余方程,(附:裴蜀定理的证明))

    我们接着上面的欧几里得算法说 扩展欧几里得算法 扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式\(^①\): ax+by = gcd(a, b) =d(解一定存在,根据数论中的 ...

  3. Wannafly挑战赛22 A-计数器(gcd,裴蜀定理)

    原题地址 题目描述 有一个计数器,计数器的初始值为0,每次操作你可以把计数器的值加上a1,a2,...,an中的任意一个整数,操作次数不限(可以为0次),问计数器的值对m取模后有几种可能. 输入描述: ...

  4. 【BZOJ1441】Min 拓展裴蜀定理

    [BZOJ1441]Min Description 给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1*X1+...An*Xn>0,且S的值最小 Input 第一行给出数 ...

  5. bzoj 2257: [Jsoi2009]瓶子和燃料【裴蜀定理+gcd】

    裴蜀定理:若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立. 所以最后能得到的最小燃料书就是gcd,所以直 ...

  6. 辗转相除法 & 裴蜀定理

    2018-03-11 17:39:22 一.辗转相除法 在数学中,辗转相除法,又称欧几里得算法(英语:Euclidean algorithm),是求最大公约数的算法.辗转相除法首次出现于欧几里得的&l ...

  7. 【BZOJ】1441: Min(裴蜀定理)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1441 这东西竟然还有个名词叫裴蜀定理................ 裸题不说....<初等数 ...

  8. [BZOJ1441&BZOJ2257&BZOJ2299]裴蜀定理

    裴蜀定理 对于整系数方程ax+by=m,设d =(a,b) 方程有整数解当且仅当d|m 这个定理实际上在之前学习拓展欧几里得解不定方程的时候就已经运用到 拓展到多元的方程一样适用 BZOJ1441 给 ...

  9. 【BZOJ-2299】向量 裴蜀定理 + 最大公约数

    2299: [HAOI2011]向量 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1118  Solved: 488[Submit][Status] ...

随机推荐

  1. Shell基本语法---for语句

    for语句 格式 ()for 变量名 in 值1 值2 值3 do 执行动作 done ()for 变量名 in `命令` do 执行动作 done ()for (( 条件 )) do 执行动作 do ...

  2. 图文详解压力测试工具JMeter的安装与使用

    压力测试是目前大型网站系统的设计和开发中不可或缺的环节,通常会和容量预估等工作结合在一起,穿插在系统开发的不同方案.压力测试可以帮助我们及时发现系统的性能短板和瓶颈问题,在这个基础在上再进行针对性的性 ...

  3. [spring] -- MVC篇

    流程: 客户端(浏览器)发送请求,直接请求到 DispatcherServlet. DispatcherServlet 根据请求信息调用 HandlerMapping,解析请求对应的 Handler. ...

  4. 基于python实现查询ip地址来源

    接口调用方法是在url后面直接加上IP地址. url = 'http://freeapi.ipip.net/218.192.3.42' #中文免费 url2 = 'http://ip-api.com/ ...

  5. Java应用服务器之tomcat会话复制集群配置

    会话是识别用户,跟踪用户访问行为的一个手段,通过cookie(存在客户端)或session(存在服务端)来判断本次请求是那个客户端发送过来:常用的会话保持有绑定会话,就是前边我们聊的在代理上通过算法或 ...

  6. iPhone截长图的方法

    iPhone手机暂没有长图截取功能,所以我们只能通过别的方式进行长图截取. (2020年4月10日更新) ios13目前可以截长图了,不过只能在Safari中进行长图截取,而且存储形式为pdf格式,下 ...

  7. 【接单】找我付费定制Python工具软件或网站开发、Chrome浏览器插件、油猴脚本

    各位可付费找我定制Python工具软件或网站开发.Chrome插件.油猴脚本.自动化软件,可通过我做的软件来评判我的实力,一定要先和我沟通你的需求,做不了的我也不会接. 费用50元起,通过淘宝APP或 ...

  8. apache 基本配置

    1.1 ServerRoot 配置 [ServerRoot "" 主要用于指定Apache的安装路径,此选项参数值在安装Apache时系统会自动把Apache的路径写入.Windo ...

  9. umount 报错

    在umount时报错: [root@node1 ~]# umount /usbumount: /usb: target is busy. (In some cases useful info abou ...

  10. mac下高效安装 homebrew 及完美避坑姿势 (亲测有效)

    世上无难事,只要找到 Homebrew 的正确安装方式. Homebrew 是什么 Homebrew是 mac的包管理器,仅需执行相应的命令,就能下载安装需要的软件包,可以省掉自己去下载.解压.拖拽( ...