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=abab

⇒ 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+(abab)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(ybax)=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×xibi(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×xb(mod m ) m) m)

⇔ \Lrarr ∃ y ∈ Z \exist y\in Z yZ,使得 a x = m y + b ax=my+b ax=my+b

⇔ a x − m y = b \Lrarr ax-my=b axmy=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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/712243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day48 ● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

一遍过。 当前房屋偷与不偷取决于 前一个房屋和前两个房屋是否被偷了。所以这里就更感觉到&#xff0c;当前状态和前面状态会有一种依赖关系&#xff0c;那么这种依赖关系都是动规的递推公式。 class Solution { public:int rob(vector<int>& nums) {vector<vec…

门店纵深不足、入口有遮挡影响客流准确率?近景客流帮你搞定!

为了优化运营策略、提升门店营收&#xff0c;很多店铺和商场都会安装客流摄像机。但是在实际应用中&#xff0c;由于门店纵深受限等原因&#xff0c;导致无法使用之前的常规客流产品。 针对这种情况&#xff0c;悠络客最新研发了近景客流产品&#xff0c;即使存在入口被遮挡或门…

内网信息搜集

目录 内网基础知识 基本流程图 怎么判断是否在域内 常规信息类收集-应用&服务&权限等 cs信息搜集 bloodhound安装及使用 内网基础知识 工作组&#xff1a;将不同的计算机按照功能分别列入不同的组&#xff0c;想要访问某个部门的资源&#xff0c;只要在【网络】里…

pyqt教程

一、组件安装配置 1.安装组件 在Anaconda Prompt下进入自己的python环境 pip install PyQt5 pip install PyQt5-tools 2.vscode安装插件 3.配置路径 配置Pyuic:Cmd与Qtdesigner:Path路径 1.Pyuic:Cmd路径 一般是在你安装的python环境下的 \Scripts\pyuic5.exe 2.Qtdesigner:P…

anaconda简介以及安装(Windows)

介绍 Anaconda是一个开源的Python发行版本&#xff0c;它是一个打包的集合&#xff0c;里面预装了conda、Python、众多packages、科学计算工具等。Anaconda的目的是方便使用Python进行数据科学研究&#xff0c;它涵盖了数据科学领域常见的Python库&#xff0c;并且自带了专门用…

Python的循环结构练习

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 生命对某些人来说是美丽的&#xff0c…

我国每年研究生的毕业数量统计分享

本数据集详细记录了自1949年至2021年我国每年研究生的毕业数量&#xff08;包括硕士和博士学位的毕业生&#xff09;。在2021年&#xff0c;我国的研究生毕业生人数达到了772,761人&#xff0c;此数字比上一年度增加了44,000人。 统计的数据单位使用的是人数。 数据展示&…

mysql,for循环执行sql

遇到一个问题&#xff0c;我需要模拟上百万数据来优化sql&#xff0c;线上数据down不下来&#xff0c;测试库又没有&#xff0c;写代码执行要么慢要么就是sql语句太长。 于是&#xff0c;直接用mysql自带的功能去实现&#xff01; 简单而简单 mysql可以for循环&#xff1f;没…

Laravel框架: Call to a member function connect() on null 异常报错处理

Laravel框架&#xff1a; Call to a member function connect() on null 异常报错处理 Date: 2024.03.01 21:03:11 author: lijianzhan 原文链接: https://learnku.com/laravel/t/63721 问题&#xff1a; local.ERROR: Call to a member function connect() on null {"…

【前端素材】推荐优质后台管理系统 Greeva平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理网站、应用程序或系统的管理界面&#xff0c;通常由管理员和工作人员使用。它提供了访问和控制网站或应用程序后台功能的工具和界面&#xff0c;使其能够管理用户、内容、数据和其他各种功能。 2、功能需求 后台管理系…

使用mininet快速入门ONOS路由交换技术与原理-路由篇

上篇文章 《使用mininet快速入门ONOS路由交换技术与原理-交换篇》 使用mininet搭建了一个简单的网络拓扑&#xff0c;并实现了同一交换机下同网段多主机的通信&#xff0c;其中涉及到的通信知识主要以二层mac地址通信为主。 但在芸芸网络的世界中&#xff0c;主机间的通信除了…

【C++】数组、函数、指针

文章目录 1.数组1.1一维数组1.2二维数组 2.函数3.指针&#xff1a;可以通过指针间接访问内存(指针记录地址&#xff09;3.1 指针的定义和使用3.2 指针所占用空间3.3 空指针和野指针3.4 const修饰指针3.5指针和数组3.6指针和函数3.7练习&#xff08;指针、数组、函数&#xff09…

综合练习(二)

目录 列出薪金比 SMITH 或 ALLEN 多的所有员工的编号、姓名、部门名称、领导姓名、部门人数&#xff0c;以及所在部门的平均工资、最高和最低工资 补充 spool Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 列出薪金比 SMITH 或 AL…

STM32USART串口数据包

文章目录 前言一、介绍部分数据包两种包装方式&#xff08;分割数据&#xff09;HEX数据包文本数据包 数据包的收发流程数据包的发送数据包的接收固定包长的hex数据包接收可变包长的文本数据包接收 二、实例部分固定包长的hex数据包接收连接线路代码实现 可变包长的文本数据包接…

【InternLM 实战营笔记】基于 InternLM 和 LangChain 搭建你的知识库

准备环境 bash /root/share/install_conda_env_internlm_base.sh InternLM升级PIP # 升级pip python -m pip install --upgrade pippip install modelscope1.9.5 pip install transformers4.35.2 pip install streamlit1.24.0 pip install sentencepiece0.1.99 pip install a…

MySQL 多表查询 连接查询 外连接

介绍 MySQL 多表查询 连接查询 内连接 外连接分为两种&#xff0c;左外和右外连接&#xff0c; 左外&#xff1a;相当于查询表1(左表)的所有数据 包含 表1和表2交集部分的数据,完全包含左表的数据 右外&#xff1a;相当于查询表2(右表)的所有数据 包含 表1和表2交集部分的数据…

比特币暴涨逼近历史最高点;阿里云全线降价20%丨 RTE 开发者日报 Vol.155

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

mysql查询某个库下所有表的数据量

要查询MySQL数据库下指定数据库的所有表的数据量&#xff08;即每个表中的记录数&#xff09;&#xff0c;你可以使用以下步骤&#xff1a; 连接到MySQL数据库&#xff1a;首先&#xff0c;你需要使用MySQL客户端或任何支持MySQL连接的编程语言&#xff08;如Python, PHP, Nod…

adb命名大全

1. 获取内部版本号&#xff1a; adb shell getprop ro.build.display.innerver 2. 获取按键值&#xff1a; adb shell getevent 3. 获取apk信息&#xff1a; adb shell dumpsys package 包名 ->info.txt 4. 获取应用包名&#xff1a;adb shell dumpsys window windows | gre…

男频和女频的区别是什么?

男频是我去找权力。女频是权力来找我。 男频不管是什么类型的&#xff0c;核心大抵都是接近权力&#xff0c;干掉权力&#xff0c;成为强权。 开局男主角弱小&#xff0c;被人嘲笑&#xff0c;被人瞧不起&#xff0c;父母亲人连带着没地位&#xff0c;欠钱&#xff0c;被冤枉&a…