Acwing-基础算法课笔记之数学知识(扩展欧几里得算法)
Acwing-基础算法课笔记之数学知识(扩展欧几里得算法)
- 一、扩展欧几里得算法
- 1、裴蜀定理
- 2、过程模拟
- 3、代码模板
- 二、线性同余方程
- 1、定义
- 2、模拟过程
- 3、结论证明
一、扩展欧几里得算法
1、裴蜀定理
对于任意正整数 a a a, b b b,那么一定存在非零整数 x x x, y y y,使得 a x + b y = e x g c d ( a , b ) ax+by=exgcd(a,b) ax+by=exgcd(a,b)
2、过程模拟
例如求 g c d ( a , b ) gcd(a,b) gcd(a,b)
∙ \bullet ∙当 b = 0 b=0 b=0 时,则可以直接返回 a a a 的值,即最大公约数,推理如下:
根据公式 a x + b y = e x g c d ( a , b ) ax+by=exgcd(a,b) ax+by=exgcd(a,b),得:
a × x + 0 × y = a a\times x+0\times y=a a×x+0×y=a
⇔ a × x = a \Lrarr a\times x=a ⇔a×x=a
⇔ x = 1 \Lrarr x=1 ⇔x=1
⇒ y = 0 \Rarr y=0 ⇒y=0
∙ \bullet ∙当 b ≠ 0 b\not =0 b=0 时,求得扩展欧几里得算法 e x g c d ( b , a % b , y , x ) exgcd(b,a\%b,y,x) exgcd(b,a%b,y,x),推理如下:
b y + ( a by+(a by+(a m o d mod mod b ) x = e x g c d ( a , b ) b)x=exgcd(a,b) b)x=exgcd(a,b)
⇒ a \rArr a ⇒a m o d mod mod b = a − ⌊ a b ⌋ b b=a-⌊\frac{a}{b}⌋b b=a−⌊ba⌋b
⇒ b y + ( a − ⌊ a b ⌋ b ) x = e x g c d ( a , b ) \rArr by+(a-⌊\frac{a}{b}⌋b)x=exgcd(a,b) ⇒by+(a−⌊ba⌋b)x=exgcd(a,b)
⇒ a x + b ( y − ⌊ a b ⌋ x ) = e x g c d ( a , b ) \rArr ax+b(y-⌊\frac{a}{b}⌋x)=exgcd(a,b) ⇒ax+b(y−⌊ba⌋x)=exgcd(a,b)
3、代码模板
// 求x, y,使得ax + by = gcd(a, b)
int exgcd(int a, int b, int &x, int &y)
{if (!b){x = 1; y = 0;return a;}int d = exgcd(b, a % b, y, x);y -= (a/b) * x;return d;
}
Acwing-扩展欧几里得算法
二、线性同余方程
1、定义
给定 n n n 组数据 a i a_i ai, b i b_i bi, m i m_i mi,对于每组数求出一个 x i x_i xi,使其满足 a i × x i ≡ b i ( m o d a_i\times x_i\equiv b_i(mod ai×xi≡bi(mod m i ) m_i) mi)。
2、模拟过程
设 a = 2 a=2 a=2, b = 3 b=3 b=3, m = 6 m=6 m=6,此时以上并不满足条件。
设 a = 4 a=4 a=4, b = 3 b=3 b=3, m = 5 m=5 m=5,要使 4 x % 5 = 3 4x\%5=3 4x%5=3,所以 x = − 3 x=-3 x=−3或 x = 2 x=2 x=2
3、结论证明
a × x ≡ b ( m o d a\times x\equiv b(mod a×x≡b(mod m ) m) m)
⇔ \Lrarr ⇔ ∃ y ∈ Z \exist y\in Z ∃y∈Z,使得 a x = m y + b ax=my+b ax=my+b
⇔ a x − m y = b \Lrarr ax-my=b ⇔ax−my=b
⇔ y ′ = − y \Lrarr y'=-y ⇔y′=−y
⇔ a x + m y ′ = g c d ( a , m ) \Lrarr ax+my'=gcd(a,m) ⇔ax+my′=gcd(a,m)(条件: g c d ( a , m ) ∣ b gcd(a,m)|b gcd(a,m)∣b)
相关文章:
Acwing-基础算法课笔记之数学知识(扩展欧几里得算法)
Acwing-基础算法课笔记之数学知识(扩展欧几里得算法) 一、扩展欧几里得算法1、裴蜀定理2、过程模拟3、代码模板 二、线性同余方程1、定义2、模拟过程3、结论证明 一、扩展欧几里得算法 1、裴蜀定理 对于任意正整数 a a a, b b b࿰…...
简单排列组合题(python版)
文章预览: 题目解法一输出结果 解法二输出结果输出结果 题目 有四个数字:1,2,3,4能组成多少个互不相同且无重复的数字的三位数? 各式多少? 解法一 我们粗略看一下这个题既然我们要组成三位数,那我们就循环3层每一层出一个数,并且if语句判…...
【排坑】搭建 Karmada 环境
git clone 报错 问题:Failed to connect to github.com port 443:connection timed out 解决: git config --global --unset http.proxy【hack/local-up-karmada.sh】 1. karmada ca-certificates (no such package) 问题:fetching http…...
每日一类:Qt GUI开发的基石《QWidget》
深入探索QWidget:Qt GUI开发的基石 在Qt框架中,QWidget类扮演着构建图形用户界面(GUI)的基础角色。它不仅提供了窗口的基本功能,还允许开发者通过继承和定制来创建各式各样的用户界面元素。本文将详细介绍QWidget的关…...
人大金仓与mysql的差异与替换
人大金仓中不能使用~下面的符号,字段中使用”,无法识别建表语句 创建表时语句中只定义字段名.字段类型.是否是否为空 Varchar类型改为varchar(长度 char) Int(0) 类型为int4 定义主键:CONSTRAINT 键名 主键类型&#x…...
Excel2LaTeX插件的使用、LaTeX表格
目录 一、下载Excel2Latex 二、使用Excel2Latex 1、将Excel2LaTeX文件添加到加载项 2、导出LaTex的表格数据 3、注意事项 1)生成的latex表格断断续续问题 2)改变线形的粗细 3)表格太大,需要缩小到适应大小 4)…...
MySQL 用了哪种默认隔离级别,实现原理是什么?
MySQL 的默认隔离级别是 RR - 可重复读,可以通过命令来查看 MySQL 中的默认隔离级别。 RR - 可重复读是基于多版本并发控制(Multi-Version Concurrency Control,MVCC )实现的。MVCC,在读取数据时通过一种类似快照的方…...
【C++初阶】第四站:类和对象(下)(理解+详解)
前言: 本篇知识点:初始化列表、explicit关键字、static成员、友元、内部类、匿名对象、编译器的优化 专栏:C初阶 目录 再谈构造函数 1️⃣构造函数体赋值 2️⃣初始化列表 explicit关键字 static成员 1.static概念 2.static特性 面试…...
redis的基本数据类型(一)
redis的基本数据类型 1、redis1.1、数据库分类1.2、NoSQL分类1.3、redis简介1.4、redis应用1.5、如何学习redis 2、redis的安装2.1、Windows安装2.2.1、客户端redis管理工具 2.2、Linux安装🔥2.2.1、redis核心文件2.2.2、启动方式2.2.3、redis桌面客户端1、redis命令…...
Windows无法识别exFAT格式怎么办?
Windows通常无法读取Mac格式的驱动器。如果使用Apple的HFS Plus将驱动器格式化为exFAT,默认情况下Windows无法读取exFAT驱动器,即使exFAT文件系统与Mac和Windows兼容。事实上,一些制造商销售的“Mac驱动器”是用这种限于Mac的文件系统预先格式…...
AI大模型的发展趋势?
大模型的发展趋势主要体现在以下几个方面: 1、模型规模的增长: 随着数据量和计算能力的不断增加,大型模型的规模也在不断扩大。模型参数数量、层数等指标不断刷新,以应对更复杂的任务和更大规模的数据。 2、多模态融合ÿ…...
List去除重复数据的五种方式
1、使用 LinkedHashSet 删除 arraylist 中的重复数据 LinkedHashSet 是在一个 ArrayList 删除重复数据的最佳方法。LinkedHashSet 在内部完成两件事: 删除重复数据 保持添加到其中的数据的顺序 Java 示例使用 LinkedHashSet 删除 arraylist 中的重复项。在给定的示例…...
VUE3自定义文章排行榜的简单界面
文章目录 一、代码展示二、代码解读三、结果展示 一、代码展示 <template><div class"article-ranking"><div class"header"><h2 class"title">{{ title }}</h2></div><div class"ranking-list&qu…...
七通道NPN 达林顿管GC2003,专为符合标准 TTL 而制造,最高工作电压 50V,耐压 80V
GC2003 内部集成了 7 个 NPN 达林顿晶体管,连接的阵列,非常适合逻辑接口电平数字电路(例 如 TTL,CMOS 或PMOS 上/NMOS)和较高的电流/电压,如电灯电磁阀,继电器,打印机或其他类似的负…...
若依springboot接入feign踩坑记录
问题情境: 简单的项目采用了若依的前后端分离版本单体应用,之前采用forest请求调用第三方接口,改为feign接口调用后,引入feign报错 error creating bean with name ‘configurationPropertiesbean’ 解决方案: spri…...
Lumerical Script ------ Error: <文件目录> line x:syntax error
Lumerical Script ------ Error: <文件目录> line x:syntax error 引言正文引言 在 Lumerical Script ------ Error: line 0: syntax error 一文中我们介绍了一种常见的错误提示信息。这里,我们使用类似的代码,介绍另一种提示错误提示信息。 正文 有时候,当我们在…...
Opencv基础与学习路线
Opencv Opencv每一篇目具体: Opencv(1)读取与图像操作 Opencv(2)绘图与图像操作 Opencv(3)详解霍夫变换 Opencv(4)详解轮廓 Opencv(5)平滑处理 具体Opencv相关demo代码欢迎访问我的github仓库(包含python和c代码) demo代码 文章目录 Opencv一…...
Python装饰器的使用详解
目录 1、函数装饰器 1.1、闭包函数 1.2、装饰器语法 1.3、装饰带参数的函数 1.4、被装饰函数的身份问题 1.4.1、解决被装饰函数的身份问题 1.5、装饰器本身携带/传参数 1.6、嵌套多个装饰器 2、类装饰器 装饰器顾名思义作为一个装饰的作用,本身不改变被装…...
基于springboot+vue的党员教育和管理系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 主要内容:毕业设计(Javaweb项目|小程序|Pyt…...
三个伪类让你的CSS代码更加优雅
公众号:程序员白特,欢迎一起交流学习~ 原文:CSS整洁之道——:is()、:where()和:has()的用法 - 掘金 (juejin.cn) 让我们写出优雅界面的CSS,它也总是把自己进化得更加优雅。 今天我们花5分钟时间学习三个优雅的CSS伪类:…...
大模型API限流设计实战指南(QPS突增200%仍稳如磐石:基于请求语义+Token消耗双维度限流)
第一章:生成式AI应用限流熔断机制 2026奇点智能技术大会(https://ml-summit.org) 在高并发场景下,生成式AI服务(如大语言模型API)极易因突发流量、长尾请求或模型推理异常导致资源耗尽、响应延迟激增甚至级联故障。限流与熔断作为…...
nlp_gte_sentence-embedding_chinese-large与MySQL数据库的智能检索系统构建
nlp_gte_sentence-embedding_chinese-large与MySQL数据库的智能检索系统构建 1. 引言 你有没有遇到过这样的情况:在电商平台搜索"红色连衣裙",结果却给你推荐了一大堆完全不相关的商品?或者在知识库系统中查找"如何备份数据…...
3层加密防御:TigerVNC安全传输协议深度解析
3层加密防御:TigerVNC安全传输协议深度解析 【免费下载链接】tigervnc High performance, multi-platform VNC client and server 项目地址: https://gitcode.com/gh_mirrors/ti/tigervnc 还在为远程桌面连接的安全性提心吊胆吗?🤔 当…...
从PointNet++到SoftGroup:3D点云分割算法演进与实战解析
1. 3D点云分割技术演进全景图 当激光雷达扫描仪发出的光束遇到物体表面时,会形成数百万个离散的三维坐标点,这就是我们常说的点云数据。就像拼图游戏需要将碎片组合成完整图案一样,3D点云分割算法的核心任务是将这些无序的点分类成有意义的物…...
如何快速掌握Adobe Source Sans 3:设计师的终极开源字体使用技巧
如何快速掌握Adobe Source Sans 3:设计师的终极开源字体使用技巧 【免费下载链接】source-sans Sans serif font family for user interface environments 项目地址: https://gitcode.com/gh_mirrors/so/source-sans Adobe Source Sans 3是一款专为用户界面环…...
一次由「 TCP半连接队列(SYN队列)溢出」导致的连接失败
**一次由TCP半连接队列溢出引发的连接故障** 在互联网通信中,TCP协议的三次握手是建立连接的基础。当服务器遭遇SYN洪泛攻击或突发高并发请求时,半连接队列(SYN队列)可能因溢出而丢弃新的SYN包,导致客户端连接失败。这…...
基于Python的招聘系统毕设源码
博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于Python的招聘系统,以满足现代企业对于高效、便捷的招聘流程的需求。具体而言,研究目的可从以下几个方面进行…...
2026小红书数据采集实战:Selenium+API混合架构,含登录态维护与评论数据提取
一、引言 2026年,小红书已成为国内最具影响力的内容社区和消费决策平台,其海量的用户生成内容(UGC)蕴含着巨大的商业价值。然而,随着平台风控体系的不断升级,传统的数据采集方案面临着前所未有的挑战。纯API接口分析方案需要分析复杂的签名算法和设备指纹,且极易被平台检…...
零基础玩转李慕婉AI绘画:手把手教你用Z-Turbo镜像生成仙逆同人图
零基础玩转李慕婉AI绘画:手把手教你用Z-Turbo镜像生成仙逆同人图 1. 为什么你需要试试这个镜像?从想法到画面的距离,可能只有几秒钟 如果你和我一样,是《仙逆》的读者或观众,心里一定有过这样的念头:要是…...
数据库备份恢复方案
数据库备份恢复方案:企业数据安全的生命线 在数字化时代,数据已成为企业的核心资产。数据库作为存储和管理数据的关键系统,其安全性直接影响业务连续性。一次意外的数据丢失或系统崩溃,可能导致巨额经济损失甚至企业信誉受损。一…...
