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 ...
随机推荐
- spring3.X版本知识点
一.SpringMVC重点注解 @Controller 1.@Controller 与 @Component 实际应用中作用等价. 2.和Struct一样,也是单例,意味着被多个请求线程共享, ...
- CodeForces 题目乱做
是个补题记录. 1419 除了 F 场上都过了. CF1419A Digit Game 这题好多人 FST 啊-- 考虑如果串长为奇数那么最后操作的肯定是第一个人,串长为偶数的最后操作的肯定是第二个, ...
- 云计算管理平台之OpenStack块存储服务cinder
一.cinder简介 cinder是openstack环境中的块存储服务,主要为运行在openstack之上的虚拟机提供块存储服务的:所谓块存储就是我们经常用的硬盘呀,U盘啊,SD卡等等这些块设备的, ...
- Python爬虫之多线程
详情点我跳转 关注公众号"轻松学编程"了解更多. 多线程 在介绍Python中的线程之前,先明确一个问题,Python中的多线程是假的多线程! 为什么这么说,我们先明确一个概念,全 ...
- Git远程推送常见错误及解决方案:
Git远程推送 关注公众号"轻松学编程"了解更多. 1.问题:git远程提交时出现错误: error: RPC failed; curl 56 OpenSSL SSL_read: ...
- ASP.NET Core Authentication系列(四)基于Cookie实现多应用间单点登录(SSO)
前言 本系列前三篇文章分别从ASP.NET Core认证的三个重要概念,到如何实现最简单的登录.注销和认证,再到如何配置Cookie 选项,来介绍如何使用ASP.NET Core认证.感兴趣的可以了解 ...
- adb、package及activity
1. adb adb连接手机参考:https://www.cnblogs.com/mind18/p/12592252.html,中的三.5节 1.1. adb介绍 ADB全名Andorid De ...
- 快进来!花几分钟看一下 ReentrantReadWriteLock 的原理!
前言 在看完 ReentrantLock 之后,在高并发场景下 ReentrantLock 已经足够使用,但是因为 ReentrantLock 是独占锁,同时只有一个线程可以获取该锁,而很多应用场景都 ...
- HTML+JavaScript实现一个简单抽奖功能
为什么会做这个东西呢,纯属好玩,闲的其实是在上次班会的时候想到的,班会的时候叫人回答问题,没人回答当时就想,我如果抽签抽到你了,你还是不回答吗??好吧,一切都是扯淡先来看看页面效果吧:点击抽取就可以抽 ...
- 初次使用flask
以写的一个小的例子来记录第一次使用: from flask import Flask, render_template import json # 实例化,可视为固定格式 app = Flask(__ ...