exgcd 学习笔记
最大公约数
- 更相减损术:\(\gcd(x,y)=\gcd(x,y-x)(x\leq y)\)。
证明:
设 \(\gcd(x,y)=k\),则 \(x=kp,y=kq,\gcd(p,q)=1\)。
那么 \(\gcd(x,y-x)=\gcd(kp,kq-kp)=k\times\gcd(p,q-p)\)。
设 \(\gcd(p,q-p)=r\),则 \(p=ra,q-p=rb\)。
那么 \(q=r(a+b)\)。
因为 \(\gcd(p,q)=1=\gcd(ra,r(a+b))\)。
所以 \(r=\gcd(a,a+b)=1,\gcd(x,y-x)=\gcd(x,y)=k\),得证。
- 辗转相除法(欧几里得算法):\(\gcd(x,y)=\gcd(y\bmod x,x)(x\leq y)\)。
取模相当于做多次减法,其实就是更相减损术的优化。
最小公倍数
容斥,两数之积除以两数的最大公约数。
小技巧:若数以质因数分解的形式给出,算最大公约数系数取 \(\min\),算最小公倍数系数取 \(\max\)。
拓展欧几里得算法
有不定方程 \(ax+by=\gcd(a,b)\),求出任意一个整数解(根据裴蜀定理,这东西一定有整数解)。
假设我们当前已经得出了方程
\]
的一组整数解 \(x=p,y=q\),根据 gcd 的性质有
\]
将取模拆掉
\]
\]
那么 \(x=q-\lfloor b/a\rfloor p,y=p\) 就是方程 \(ax+by=\gcd(a,b)\) 的一组整数解。
所以在求解 \(ax+by=\gcd(a,b)\) 时我们可以先递归求解 \(b\bmod a\times x+ay=\gcd(b\bmod a,a)\) 然后计算当前的解。
这个递归的终止条件是 \(a=0\),此时 \(x=0,y=1\) 是一组解,返回即可(虽然 \(x\) 取什么都没有关系但我们想让解的绝对值尽量小)。
Tips:通过 exgcd 求出的解的绝对值是小于等于系数的绝对值的最大值的(边界按上面写的),即 \(\max(|x|,|y|)\leq\max(|a|,|b|)\)。
具体证明我也不会,是蛙告诉我滴/qq,先鸽着以后再补。
exgcd 学习笔记的更多相关文章
- 扩展欧几里得算法(exGCD)学习笔记
@(学习笔记)[扩展欧几里得] 本以为自己学过一次的知识不会那么容易忘记, 但事实证明, 两个星期后的我就已经不会做扩展欧几里得了...所以还是写一下学习笔记吧 问题概述 求解: \[ax + by ...
- exgcd学习笔记
扩展欧几里得算法是当已知a和b时,求得一组x和y使得 首先,根据数论中的相关定理,解一定存在 //留坑待填 之后我们可以推一推式子 将a替换掉 展开括号 提出b,合并 且 设 现在已经将 ...
- bzoj1477 && exgcd学习笔记
exgcd 由于忘记了exgcd,这道题就没做出来... exgcd的用处是求ax+by=gcd(a,b)这样方程的解 大概是这个样子的 void ext_gcd(long long a, long ...
- 扩展中国剩余定理 exCRT 学习笔记
前言 由于 \(\{\mathrm{CRT}\}\subseteq\{\mathrm{exCRT}\}\),而且 CRT 又太抽象了,所以直接学 exCRT 了. 摘自 huyufeifei 博客 这 ...
- 数论算法 剩余系相关 学习笔记 (基础回顾,(ex)CRT,(ex)lucas,(ex)BSGS,原根与指标入门,高次剩余,Miller_Rabin+Pollard_Rho)
注:转载本文须标明出处. 原文链接https://www.cnblogs.com/zhouzhendong/p/Number-theory.html 数论算法 剩余系相关 学习笔记 (基础回顾,(ex ...
- exLucas学习笔记
exLucas学习笔记 Tags:数学 写下抛硬币和超能粒子炮改 洛谷模板代码如下 #include<iostream> #define ll long long using namesp ...
- OI数学 简单学习笔记
基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...
- OI知识点|NOIP考点|省选考点|教程与学习笔记合集
点亮技能树行动-- 本篇blog按照分类将网上写的OI知识点归纳了一下,然后会附上蒟蒻我的学习笔记或者是我认为写的不错的专题博客qwqwqwq(好吧,其实已经咕咕咕了...) 基础算法 贪心 枚举 分 ...
- 「ExLucas」学习笔记
「ExLucas」学习笔记 前置芝士 中国剩余定理 \(CRT\) \(Lucas\) 定理 \(ExGCD\) 亿点点数学知识 给龙蝶打波广告 Lucas 定理 \(C^m_n = C^{m\% m ...
随机推荐
- LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法
LC滤波器概述 LC滤波器也称为无源滤波器,是传统的谐波补偿装置.LC滤波器之所以称为无源滤波器,顾名思义,就是该装置不需要额外提供电源.LC滤波器一般是由滤波电容器.电抗器和电阻器适当组合而成,与谐 ...
- ZooKeeper CentOS7上安装
下载http://www.apache.org/dyn/closer.cgi/zookeeper(我下的是zookeeper-3.4.14) 1.创建 /usr/local/services/zook ...
- Spring Cloud 学习笔记 (一)-- Eureka 服务器
开局一张图,截取了本人学习资料中的一张图,很好地展示了Eureka的架构. Eureka服务器 管理服务的作用.细分为服务注册,服务发现. 所有的客户端在Eureka服务器上注册服务,再从Eureka ...
- 【论文阅读】An Empirical Study of Architectural Decay in Open-Source Software
2020-06-19这篇文章是我学习 软件架构与中间件 课程时分享的论文.可以说,这篇文章塑造了我基本的科研观,也养成了我如今看论文的习惯.感谢老师们,也感谢恒恒对我的帮助. 论文地址: https: ...
- 【SpringBoot】13. logback日志记录
logback日志记录 Spring Boot 1.5.19.RELEASE 1.导入相关jar包 在spring-boot-starter-web 中已经包含 2.添加logback.xml配置文件 ...
- C语言I博课作业04
这个作业属于哪个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-1/homework/11489 我在这个作业课程 ...
- Java多线程经典题目(医院挂号)
题目 实现一个医院的挂号机系统,要求:有多台挂号机同时运行,此时无论有多少患者挂号,要求都能挂到不同 的号码,并且要求实现当意外断电之后,下一次恢复还能从上次结束号码继续挂号? * synchroni ...
- gcc 执行c++报错
D:\cpp>g++ hello.cc Info: resolving std::cout by linking to __imp___ZSt4cout (auto-import) c:/min ...
- 写博客真的很枯燥,更麻烦的是我还不会MD,排版太不友好了啊。
学习MD 第一标题 #一号标题 ##二号标题 神马啊,博客园居然不支持MD语法
- Python_Python处理JSON文件
# Python处理Json对象 # Python处理Json对象 ''' json.loads() 将JSON字符串转为Python对象 json.dumps() 将Python对象转为JSON字符 ...