CRT 与 exCRT
感觉网上很多写的都不是很清楚啊 awa。
CRT
就是解这个方程 \(\begin{cases}x\equiv r_1 \pmod {m_1}\\ x\equiv r_2 \pmod {m_2} \\\dots\\x_n \equiv r_n \pmod {m_n}\end{cases}\),其中 \(m_1\sim m_n\) 两两互质,求 \(x\) 最小解。
令 \(M = \prod\limits_{i = 1}^n m_i\),\(t_i\) 为 \(\dfrac{M}{m_i}\) 在模 \(m_i\) 意义下的乘法逆元。。则有 \(ans_0 = \sum\limits_{i = 1}^n \dfrac{M}{m_i} t_i r_i\),通解形式为 \(ans = ans_0 + kM\),特别的其中小于 \(M\) 的非负整数解只有一个,那就是 \(ans = ans_0\bmod M\),这也是最小解。
证明:先证明正确性,再证明唯一性。
正确性:(感觉很显然 qwq)对于任意 \(1\le k \le n\) 有 \(\sum\limits_{i = 1}^n \dfrac{M}{m_i}t_i r_i \equiv r_k\pmod {m_k}\)。对于 \(i\not= k\) 时,\(\dfrac{M}{m_i} \equiv 0\pmod {m_k}\)(显然),这个时候不会对 \(\sum\limits_{i = 1}^n \dfrac{M}{m_i} t_i r_i\) 这个式子做出任何贡献。当 \(i = k\) 时,由于 \(t_i\) 是 \(\dfrac{M}{m_i}\) 在堆 \(m_i\) 取余意义下的逆元,因此 \(\dfrac{M}{m_i}t_i\equiv 1\pmod {m_i}\)。因为这里 \(i = k\),所以应该是 \(\dfrac{M}{m_k}t_k\equiv 1\pmod{m_k}\),两边同乘一个 \(r_k\) 就得到了 \(\dfrac{M}{m_k}t_k r_k\equiv r_k\pmod {m_k}\)。因此就有 \(\sum\limits_{i = 1}^n \dfrac{M}{m_i}t_i r_i \equiv r_k\pmod {m_k}\)。
唯一性。这里唯一性是指小于 \(M\) 的解唯一。假设我们已经找到了一个解 \(x\),它的通解形式显然是 \(x + kM\),可以用反证法证明。那么只要 \(k \not= 1\) 则 \(x + kM> M\)。
exCRT
本质是同余方程组的合并。就是 CRT 解决的问题去掉了一个互质。
比如说现在我们有两个方程组,\(\begin{cases}x\equiv r_1 \pmod {m_1} \\ x\equiv r_2\pmod {m_2}\end{cases}\),令 \(\begin{cases}x = k_1m_1 + r_1 \\ x = k_2m_2 + r_2\end{cases}\),则有 \(k_1m_1 + r_1 = k_2m_2 + r_2\)。移项得 \(k_1m_1 + k_2(-m_2) = r_2 - r_1\)。运用飞天意面神教的咒语exgcd 的知识我们知道当 \(\gcd(m_1, m_2) \not | (r_2 - r_1)\) 时方程无解,否则可以用 exgcd 的知识求出来一组解 \(k_1',k_2'\) 满足 \(k_1'm_1 + k_2'm_2 = \gcd(m_1, m_2)\)。一个合法的解就是 \((\dfrac{k_1'(r_2 - r_1)}{\gcd(m_1, m_2)} + o\dfrac{m_2}{\gcd(m_1, m_2)})m_1+(\dfrac{-k_2'(r_2 - r_1)}{\gcd(m_1, m_2)} - o\dfrac{m_1}{\gcd(m_1, m_2)})m_2 = r_2 - r_1\)。\(o\) 是整数。
即 \(k_1 = (\dfrac{k_1'(r_2 - r_1)}{\gcd(m_1, m_2)} + o\dfrac{m_2}{\gcd(m_1, m_2)})\),代入进 \(x\) 得 \(x = (\dfrac{k_1'(r_2 - r_1)}{\gcd(m_1, m_2)} + o\dfrac{m_2}{\gcd(m_1, m_2)})m_1 + r_1\),也就是 \(x = \dfrac{k_1'm_1(r2-r1)}{\gcd(m_1, m_2)} + o\dfrac{m_1m_2}{\gcd(m_1, m_2)} + r_1\)。
我们觉得 \(o\dfrac{m_1m_2}{\gcd(m_1, m_2)}\) 很丑,因此我们用飞天意面神教的咒语同余的方法两边同时对 \(\dfrac{m_1m_2}{\gcd(m_1, m_2)}\)取余消掉这项避免掉 \(o\) 的求解,同时这样做也能让我们完成合并两个同余式的使命,就能得到 \(x\equiv \dfrac{k_1'm_1(r_2- r_1)}{\gcd(m_1, m_2)} + r_1\pmod {\dfrac{m_1m_2}{\gcd(m_1, m_2)}}\)。
代码里面有个小细节,\(r_2 - r_1\) 是负数怎么办?
我们可以 \([(r_2 - r_1) \bmod m_2 + m_2]\bmod m_2\) 一下。
由于我也没有好的方法说明,如果大家有好的方法欢迎用邮箱发给小 SX 哒(我的 QQ 邮箱是 2392303708@qq.com)。就是令 \(M\) 为 \(\operatorname{lcm}(m_1, m_2, \dots, m_k - 1)\),我们已经知道了前 \(k - 1\) 个方程的通解 \(x\),现在我们要求一个 \(x'\) 满足 \(x'\equiv r_k \pmod {m_k}\),\(x'\) 可以表示成 \(x + tM\) 的形式,也就是 \(tM + x\equiv r_k\pmod{m_k}\),移项得 \(tM\equiv r_k - x\pmod{m_k}\)。容易看出来 \(x\) 其实对应着我们上面的 \(r_1\),\(r_k\) 对应着我们上面的 \(r_2\)。
这是一个简单的线性同余方程,我们可以用扩欧解掉。
这种方式更加简单,可拓展性强,你可以用类似的方法秒杀 https://www.luogu.com.cn/problem/P4774
但缺点在于貌似比较迷。。。?毕竟没有上面的推导雀食布吉岛为什么模数就直接取它们的 \(\operatorname{lcm}\) 对八┓( ´∀` )┏
屠龙勇士这题貌似没啥可讲的,毕竟推出来式子感觉比较显然。。。?
无脑套个平衡树就挺无聊的就,,,但是自己到现在还不能默写平衡树,,,wtf,,,
明天去背 fhq 板子 qwq!一定要背下来惹。。。
虽然正常考试一般不考这玩意但是背下来貌似能省很多动脑的内容。。。套板子万岁!┓( ´∀` )┏
CRT 与 exCRT的更多相关文章
- P1495 CRT,P4777 EXCRT
updata on 2020.4.11 修正了 excrt 的一处笔误 CRT 求解方程: \[\begin{cases} x \equiv a_1 \pmod {m_1}\\ x \equiv a_ ...
- CRT和EXCRT学习笔记
蒟蒻maomao终于学会\(CRT\)啦!发一篇博客纪念一下(还有防止忘掉) \(CRT\)要解决的是这样一个问题: \[x≡a_1(mod m_1)\] \[x≡a_2(mod m_2)\] ...
- CRT和EXCRT简单学习笔记
中国剩余定理CRT 中国剩余定理是要求我们解决这样的一类问题: \[\begin{cases}x\equiv a_1\pmod {b_1} \\x\equiv a_2 \pmod{b_2}\\...\ ...
- 浅析中国剩余定理(从CRT到EXCRT))
前置知识 1. a%b=d,c%b=e, 则(a+c)%b=(d+e)%b(正确性在此不加证明) 2. a%b=1,则(d\(\times\)a)%b=d%b(正确性在此不加证明) 下面先看一道题(改 ...
- Algorithm: CRT、EX-CRT & Lucas、Ex-Lucas
中国剩余定理 中国剩余定理,Chinese Remainder Theorem,又称孙子定理,给出了一元线性同余方程组的有解判定条件,并用构造法给出了通解的具体形式. \[ \begin{aligne ...
- 关于一次同余方程的一类解法(exgcd,CRT,exCRT)
1.解同余方程: 同余方程可以转化为不定方程,其实就是,这样的问题一般用拓展欧几里德算法求解. LL exgcd(LL a,LL b,LL &x,LL &y){ if(!b){ x=; ...
- 「算法笔记」CRT 与 exCRT
一.扩展欧几里得 求解方程 \(ax+by=\gcd(a,b)\). int exgcd(int a,int b,int &x,int &y){ if(!b) return x=1,y ...
- 中国剩余定理(CRT)及其扩展(EXCRT)详解
问题背景 孙子定理是中国古代求解一次同余式方程组的方法.是数论中一个重要定理.又称中国余数定理.一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作<孙子算经>卷下第 ...
- 中国剩余定理(CRT)
只看懂了CRT,EXCRT待补.... 心得:记不得这是第几次翻CRT了,每次都有迷迷糊糊的.. 中国剩余定理用来求解类似这样的方程组: 求解的过程中用到了同余方程. x=a1( mod x1) x= ...
- $NOIp2018$劝退记
鸽子博主好久没更博了,这一更可能以后都更不了了啊 \(Day~~1\) 考试爆零,已经无所畏惧了. 当作攒rp吧...qwq 晚上写了写数学总结,蒯了一堆人的博客资料,然后就学会了\(CRT\),\( ...
随机推荐
- Clickhouse表引擎之MergeTree
1.概述 在Clickhouse中有多种表引擎,不同的表引擎拥有不同的功能,它直接决定了数据如何读写.是否能够并发读写.是否支持索引.数据是否可备份等等.本篇博客笔者将为大家介绍Clickhouse中 ...
- Qwt开发笔记(一):Qwt简介、下载以及基础demo工程模板
前言 QWT开发笔记系列整理集合,这是目前使用最为广泛的Qt图表类(Qt的QWidget代码方向只有QtCharts,Qwt,QCustomPlot),使用多年,系统性的整理,本系列旨在系统解说并 ...
- 【企业流行新数仓】Day02:DWS层(按日分区的宽表)、DWT层(全量累计表)、ADS层、总结
一.DWS层 1.概括 dwd层的数据,每日轻度聚合,建宽表 表名 粒度 dws_uv_detail_daycount 一个设备是一行 dws_user_action_daycount(只统计今天登录 ...
- Kubernetes(k8s)存储管理之数据卷volumes(一):volumes的引入和emptyDir数据卷
目录 一.系统环境 二.前言 三.Docker数据卷volumes 四.Kubernetes 数据卷volumes 4.1 有状态容器和无状态容器 4.2 Kubernetes 数据卷volumes解 ...
- 搭建漏洞环境及实战——在Windows系统中安装WAMP
安装成功之后,打开显示 链接:https://pan.baidu.com/s/1NpU7fUYOO_CSM8dNXKdnCw 提取码:mxvw
- json提取器和beanshell处理器组合,将提取的所有id以数组返回
1.添加json提取器 2.添加beanshell处理器,并编写脚本 String str1 = vars.get("buildid_ALL"); log.info(str1); ...
- 基于.NetCore开发博客项目 StarBlog - (25) 图片接口与文件上传
前言 上传文件的接口设计有两种风格,一种是整个项目只设置一个接口用来上传,然后其他需要用到文件的地方,都只存一个引用ID:另一种是每个需要文件的地方单独管理各自的文件.这俩各有优劣吧,本项目中选择的是 ...
- 网络监测工具之Zabbix的搭建与测试方法(二)-- SNMP、OID和MIB概述
概念 SNMP是专门设计用于在 IP 网络管理网络节点的一种标准协议,它是一种应用层协议.SNMP使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长.通过SNMP接收随机消息(及事件报告 ...
- Windows下的SSH Server
(请注意,本文内容以杂谈为主,稍微提及了一些在MobaXterm中开启SSH Server可能遇到的情况和解决方法,没有多少干货,请酌情查看,谢谢) 最近比较无聊,使用MobaXterm,无聊翻看里面 ...
- Java学习笔记:2022年1月7日
Java学习笔记:2022年1月7日 摘要:今天的这篇笔记主要是通过讲解基本的JVM结构来理解Java中一些行为的运行机制,进而更加的深入理解Java的运行原理. 目录 Java学习笔记:2022年1 ...