中国剩余定理 CRT
中国剩余定理 CRT
正常版本CRT
要解的是一个很容易的东西
\[
\begin{aligned}
x\equiv a_1(mod\ m_1)\\
x\equiv a_2(mod\ m_2)\\
...\\
x\equiv a_n(mod\ m_n)
\end{aligned}
\]
保证\(m_1,m_2...m_n\)之间两两互质,求最小的\(x\)。
设\(M=\prod m_i\)。
首先我们确定一点,我们求出了任意一个满足条件的\(x\)之后,只需要对其模\(M\)就是最终的答案。
因为\(M\)是所有数的\(lcm\)。
考虑一下,对于每一个\(a_i\),如果我们能够求出一个数\(x_i\)
满足它是其他所有\(m\)的乘积,即\(M_i=M/m_i\)的倍数,并且\(x_i\equiv 1(mod\ m_i)\)
也就是对于任意一个\(x_i\),满足\(x_i\equiv 0(mod\ m_k),k\ne i\),\(x_i\equiv 1(mode\ m_i)\)
那么最终的答案就会是\(\sum(a_ix_i)mod\ M\)。
深思熟虑的考虑如何求出\(x_i\),
因为\(x_i\)是\(M_i\)的倍数,所以\(x_i=kM_i\equiv 1(mod\ m_i)\)
所以\(k\)是\(M_i\)在模\(m_i\)意义下的逆元。所以\(x_i\)就是\(k\)的\(M_i\)倍,注意最终统计入结果的模数是\(M\)。
所以,\(CRT\)的结果就是\(\sum (a_ik_iM_i)mod\ M\)。
不正常版本CRT
要求的东西同上,不保证所有\(m_i\)互质。
我们肯定不能像上面那样堆在一起求了。
换个方法,假设我们只有两个方程。\(x\equiv a_1(mod\ m_1),x\equiv a_2(mod\ m_2)\)
怎么算答案?
显然是要满足:\(x=x_1m_1+a_1=x_2m_2+a_2\),并且\(x\)最小。
显然是\(x_1,x_2\)都要尽可能的小。
所以\(x_1m_1+x_2m_2=a_2-a_1\)
那么\(exgcd\)可以求解最小的\(x_1\),然后就可以求得\(x=x_1m_1+a_1\)
这样子就可以同时满足这两个方程了,因为方程有多个,
所以我们把这两个方程合并,假设当前求出来的解是\(x'\)
那么我们就新加入一个方程\(x\equiv x'(mod\ lcm(m_1,m_2))\)就好了。
中国剩余定理 CRT的更多相关文章
- 中国剩余定理(CRT) & 扩展中国剩余定理(ExCRT)总结
中国剩余定理(CRT) & 扩展中国剩余定理(ExCRT)总结 标签:数学方法--数论 阅读体验:https://zybuluo.com/Junlier/note/1300035 前置浅讲 前 ...
- 中国剩余定理(CRT)及其扩展(EXCRT)详解
问题背景 孙子定理是中国古代求解一次同余式方程组的方法.是数论中一个重要定理.又称中国余数定理.一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作<孙子算经>卷下第 ...
- 扩展GCD 中国剩余定理(CRT) 乘法逆元模版
extend_gcd: 已知 a,b (a>=0,b>=0) 求一组解 (x,y) 使得 (x,y)满足 gcd(a,b) = ax+by 以下代码中d = gcd(a,b).顺便求出gc ...
- 中国剩余定理(CRT)及其拓展(ExCRT)
中国剩余定理 CRT 推导 给定\(n\)个同余方程 \[ \left\{ \begin{aligned} x &\equiv a_1 \pmod{m_1} \\ x &\equiv ...
- 学习笔记:中国剩余定理(CRT)
引入 常想起在空间里见过的一些智力题,这个题你见过吗: 一堆苹果,\(3\)个\(3\)个地取剩\(1\)个,\(5\)个\(5\)个地取剩\(1\)个,\(7\)个\(7\)个地取剩\(2\)个,苹 ...
- CRT&EXCRT 中国剩余定理及其扩展
前言: 中国剩余定理又名孙子定理.因孙子二字歧义,常以段子形式广泛流传. 中国剩余定理并不是很好理解,我也理解了很多次. CRT 中国剩余定理 中国剩余定理,就是一个解同余方程组的算法. 求满足n个条 ...
- 扩展中国剩余定理(扩展CRT)详解
今天在$xsy$上翻题翻到了一道扩展CRT的题,就顺便重温了下(扩展CRT模板也在里面) 中国剩余定理是用于求一个最小的$x$,满足$x\equiv c_i \pmod{m_i}$. 正常的$CRT$ ...
- 欧几里得(辗转相除gcd)、扩欧(exgcd)、中国剩余定理(crt)、扩展中国剩余定理(excrt)简要介绍
1.欧几里得算法(辗转相除法) 直接上gcd和lcm代码. int gcd(int x,int y){ ?x:gcd(y,x%y); } int lcm(int x,int y){ return x* ...
- 【CRT】中国剩余定理简介
中国剩余定理(CRT) 中国剩余定理出自中国的某本古书,似乎是孙子兵法?(雾 其中有这样一个问题: 有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何? 即,对于这样一个方程组: \[ ...
随机推荐
- 浅析Springboot自动配置
首先我们先来看springboot的主程序类,主程序类中使用@SpringBootApplication注解来标记说明这是一个springboot应用,查看该注解源码如下图: 图中的@EnableAu ...
- Windows Server 2012 NIC Teaming 网卡绑定介绍及注意事项
Windows Server 2012 NIC Teaming 网卡绑定介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Window ...
- mssql sqlserver 指定特定值排在表前面
转自:http://www.maomao365.com/?p=7141 摘要: 下文讲述sql脚本编写中,将 特定值排在最前面的方法分享, 实验环境:sqlserver 2008 R2 例:将数据表中 ...
- SAP CRM 集类型(Set Type)与产品层次(Product Hierarchy)
本文是产品与对象相关的部分SAP文档的翻译,不包含配置部分. 本文链接:https://www.cnblogs.com/hhelibeb/p/10112723.html 1,对象(Objects) 对 ...
- 认识多线程中start和run方法的区别?
一.认识多线程中的 start() 和 run() 1.start(): 先来看看Java API中对于该方法的介绍: 使该线程开始执行:Java 虚拟机调用该线程的 run 方法. 结果是两个线程并 ...
- Java11新特性!
Java11又出新版本了,我还在Java8上停着.不过这也挡不住我对他的热爱,忍不住查看了一下他的新性能,由于自己知识有限,只总结了以下八个特性: 1.本地变量类型推断 什么是局部变量类型推断? va ...
- Spark1.6之后为何使用Netty通信框架替代Akka
解决方案: 一直以来,基于Akka实现的RPC通信框架是Spark引以为豪的主要特性,也是与Hadoop等分布式计算框架对比过程中一大亮点. 但是时代和技术都在演化,从Spark1.3.1版本开始,为 ...
- Nginx 配置 和安装
Nginx 博客 web服务器和web框架的关系 web服务器(nginx): 接收HTTP请求(例如www.pythonav.cn/xiaocang.jpg)并返回数据 web服务器,仅仅就是 接收 ...
- ASP+中文显示之两种解决方法
作者刚開始写ASP+程序时候碰到的第一个比較大的问题就是中文显示问题,执行后发现ASP+从数据库中读 取出来的中文所有变成了?????,有点相似jsp中的这个频率出现最高的中文显示问题了,查了资料发 ...
- 重建二叉树[by Python]
题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2 ...