[学习笔记]中国剩余定理
中国剩余定理
以前公式用的是图片导致排版丑陋,今天复习顺便重写了
描述
有同余方程组:
\[ \left\{ \begin{matrix} x \equiv a_1 (mod \ m_1) \\ x \equiv a_2 (mod \ m_2) \\ ... \\ x \equiv a_k (mod \ m_k) \end{matrix} \right. \\ 其中m_i两两互质 \]
令\(M = \prod_{i = 1}^{k} m_i\),则方程组的一个解为\(x = \sum_{i = 1}^{k} a_i \cdot \frac{M}{m_i} \cdot (\frac{M}{m_i})^{-1}\),其中\((\frac{M}{m_i})^{-1}\)表示\(\frac{M}{m_i}\)模\(m_i\)意义下的逆元
如果求最小非负整数解,再模\(M\)即可
证明
对于每一个\(x \equiv a_i (mod \ m_i)\),记解为\(x_i\),则有\(x_i + m_i \cdot y = a_i\),两边除以\(a_i\),得:
\[ \frac{x_i}{a_i} + \frac{m_i \cdot y}{a_i} = 1 \tag{1} \]
由\(m_i\)两两互质得\(\frac{M}{m_i}\)与\(m_i\)互质,所以存在\(p, q \in Z^+\),使得:
\[ p \cdot \frac{M}{m_i} + q \cdot m_i = 1 \tag{2} \]
即:
\[ p \cdot \frac{M}{m_i} \equiv 1 (mod \ m_i) \\ p \equiv (\frac{M}{m_i})^{-1} (mod \ m_i) \tag{3} \]
由\((1)(2)(3)\)易得\(x_i = a_i \cdot p \cdot \frac{M}{m_i} = a_i \cdot \frac{M}{m_i} \cdot (\frac{M}{m_i})^{-1}\)是方程的一个解
对于\(j \neq i\),有\(m_j | \frac{M}{m_i}\),所以\(x_i \equiv 0 (mod \ m_j)\),所以\(\sum_{i = 1}^{k} a_i \cdot \frac{M}{m_i} \cdot (\frac{M}{m_i}) ^ {-1} \equiv a_j (mod \ m_j)\)
故方程组的一个解是\(x = \sum_{i = 1}^{k} a_i \cdot \frac{M}{m_i} \cdot (\frac{M}{m_i}) ^ {-1}\),显然\(x \% M\)是最小非负整数解
一个应用
有的时候题目要求答案模一个大合数,可以把合数拆成\(\prod p_{i}^{k_i}\)的形式,化成由\(ans \equiv a_i (mod \ p_{i}^{k_i})\)组成的方程组然后求解
代码
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;typedef long long LL;
LL a[1005], m[1005], M = 1, ans;
int n;void ExGCD(LL a, LL b, LL &d, LL &x, LL &y)
{if(!b) d = a, x = 1, y = 0;else{ExGCD(b, a % b, d, y, x);y -= a / b * x;}
}
LL Inverse(LL a, LL p)
{LL x, y, d;ExGCD(a, p, d, x, y);x = (x % p + p) % p;return x;
}
int main()
{scanf("%d", &n);for(int i = 0; i < n; i++)scanf("%lld", a + i);for(int i = 0; i < n; i++){scanf("%lld", m + i);M *= m[i];}for(int i = 0; i < n; i++)ans = (ans + M / m[i] * Inverse(M / m[i], m[i]) % M * a[i] % M) % M;ans = (ans + M) % M;printf("%lld\n", ans);return 0;
}//Rhein_E
转载于:https://www.cnblogs.com/Rhein-E/p/10637099.html
[学习笔记]中国剩余定理相关推荐
- 中国剩余定理学习 拓展中国剩余定理
中国剩余定理学习 && 拓展中国剩余定理 中国剩余定理: 拓展中国剩余定理: 中国剩余定理: 仅供自己复习时查看一下大佬笔记,详细学习过程在大佬的博客. 学习连接:https://ww ...
- python中国剩余定理公式_《孙子算经》之物不知数题:中国剩余定理
1.<孙子算经>之"物不知数"题 今有物不知其数,三三数之剩二,五五数之剩七,七七数之剩二,问物几何? 2.中国剩余定理 定义: 设 a,b,m 都是整数. 如果 m ...
- 中国剩余定理matlab程序,中国剩余定理即孙子定理的五种解法
中国剩余定理即孙子定理的五种解法 -- 学习初等数论心得笔记 2013-10-04 博文2015-12修改 "中国剩余定理"是公元5-6世纪.我国南北朝时期的一部著名算术著作< ...
- 基于Miracl库的中国剩余定理C语言实现
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/tch3430493902/articl ...
- 密码学基础算法(二)中国剩余定理
随便谷歌了一个图片做首图 原图地址: http://www.siwapu.com/etagid41968b0/ 密码学基础系列: (一) 基于整数的欧几里得算法和扩展欧几里得算法 (二) 中国剩余定理 ...
- 扩展欧几里得算法、乘法逆元与中国剩余定理
文章目录 前言 定义.定理和部分证明 整除 定义 定理 定理的证明 同余 定义 同余的性质 同余的运算律 运算律的证明 扩展欧几里得算法 代码模板 算法详解 乘法逆元 求解逆元 乘法逆元的作用 中国剩 ...
- 孙子定理 中国剩余定理
孙子定理 摘自:百度百科 目录 定义 解释 解法 数学公式 中国剩余定理 案例 展开 编辑本段 定义 中国古代求解一次同余式组(见同余)的方法.是数论中一个重要定理.又称中国剩余定理. 内容 编辑本段 ...
- 挑战程序竞赛系列(41):4.1中国剩余定理
挑战程序竞赛系列(41):4.1中国剩余定理 详细代码可以fork下Github上leetcode项目,不定期更新. 练习题如下: POJ 1006: Biorhythms POJ 2891: Str ...
- CF338D GCD Table(拓展中国剩余定理,细节处理,2900分)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 CF338D GCD Table(拓展中国剩余定理,细节处理,2900分) Problem 有一张 n ...
- 初等数论--同余方程--同余方程组:中国剩余定理
初等数论--同余方程--同余方程组:中国剩余定理 博主是初学初等数论(整除+同余+原根),本意是想整理一些较难理解的定理.算法,加深记忆也方便日后查找:如果有错,欢迎指正. 我整理成一个系列:初等数论 ...
最新文章
- 400 多行代码!超详细 Rasa 中文聊天机器人开发指南 | 原力计划
- cocos2d-x3.0rc打包apk遇到的一些问题记录
- 数学建模中的excel操作
- c/c++格式化字符串的标识
- Flume学习笔记(一)安装与简单使用
- 操作系统原理之内存管理(第四章第一部分)
- 使用搜索栏过滤collectionView(按照首字母)
- 《Reids 设计与实现》第七章 RDB 持久化
- Photopile JS – 帮助你实现精致的照片堆叠效果
- selenium报错 : WebDriverException: ‘chromedriver‘ executable needs to be in PATH解决方案
- 毕业论文:基于响应式页面的新闻资讯类门户网站的设计与实现
- 微服务的数据聚合Join
- 应用实践 | Apache Doris 在网易互娱的应用实践
- django搭建个人博客(一)
- 如何将ES6转换成ES5?
- jQuery 效果 - 淡入淡出
- 字重font-weight--没有UI的前端er
- 基于SpringBoot的运维监控系统
- 发几个mac高清壁纸,想要的拿去!
- Latex 2.1 文字与符号
热门文章
- CodeForces 255C. Almost Arithmetical Progression (DP)
- Begin using git (Part1) - Git的安装与配置
- iPhone官方资料链接
- ⭐图例结合超硬核讲解shiro⭐
- protoc 生成C++代码
- MySQL 常用函数大全
- Servlet--ListenerFilter
- linux中lsattr命令,Linux命令(16)——chattr与lsattr命令
- buffer sort Oracle,SQL执行计划中的BUFFER SORT是什么意思呢,请高手指点.
- html5标签对js影响,浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预