29-中国剩余定理CRT
中国剩余定理的具体描述是这样的:

给出你n个ai和mi,最后让求出x的最小值是多少。
中国剩余定理说明:假设整数m1, m2, ... , mn两两互质,则对任意的整数:a1, a2, ... , an,方程组
有解,并且通解可以用如下方式构造得到:
- 设
是整数m1, m2, ... , mn的乘积,并设
是除了mi以外的n - 1个整数的乘积。 - 设
为
模
的数论倒数:
- 方程组
的通解形式为:
在模
的意义下,方程组
只有一个解:
使用中国剩余定理来求解上面的“物不知数”问题,便可以理解《孙子歌诀》中的数字含义。这里的线性同余方程组是:
三个模数m1
3, m2
5, m3
7的乘积是M
105,对应的M1
35, M2
21, M3
15. 而可以计算出相应的数论倒数:t1
2, t2
1, t3
1. 所以《孙子歌诀》中的70,21和15其实是这个“物不知数”问题的基础解:
而将原方程组中的余数相应地乘到这三个基础解上,再加起来,其和就是原方程组的解:
这个和是233,实际上原方程组的通解公式为:
《孙子算经》中实际上给出了最小正整数解,也就是k
-2时的解:x
23.
- ///n个mi互质
- const LL maxn = 20;
- LL a[maxn], m[maxn], n;
- LL CRT(LL a[], LL m[], LL n)
- {
- LL M = 1;
- for (int i = 0; i < n; i++) M *= m[i];
- LL ret = 0;
- for (int i = 0; i < n; i++)
- {
- LL x, y;
- LL tm = M / m[i];
- ex_gcd(tm, m[i], x, y);
- ret = (ret + tm * x * a[i]) % M;
- }
- return (ret + M) % M;
- }
分割线
- ///n个mi不互质
- const LL maxn = 1000;
- LL a[maxn], m[maxn], n;
- LL CRT(LL a[], LL m[], LL n) {
- if (n == 1) {
- if (m[0] > a[0]) return a[0];
- else return -1;
- }
- LL x, y, d;
- for (int i = 1; i < n; i++) {
- if (m[i] <= a[i]) return -1;
- d = ex_gcd(m[0], m[i], x, y);
- if ((a[i] - a[0]) % d != 0) return -1; //不能整除则无解
- LL t = m[i] / d;
- x = ((a[i] - a[0]) / d * x % t + t) % t; //第0个与第i个模线性方程的特解
- a[0] = x * m[0] + a[0];
- m[0] = m[0] * m[i] / d;
- a[0] = (a[0] % m[0] + m[0]) % m[0];
- }
- return a[0];
- }
以上大部分内容来自wiki
29-中国剩余定理CRT的更多相关文章
- 「中国剩余定理CRT」学习笔记
设正整数$m_1, m_2, ... , m_r$两两互素,对于同余方程组 $x ≡ a_1 \ (mod \ m_1)$ $x ≡ a_2 \ (mod \ m_2)$ $...$ $x ≡ a_r ...
- 中国剩余定理CRT(孙子定理)
中国剩余定理 给出以下的一元线性同余方程组: $\Large(s):\left\{\begin{aligned}x\equiv a_1\ (mod\ m_1)\\x\equiv a_2\ (mod\ ...
- 【bzoj3782】上学路线 dp+容斥原理+Lucas定理+中国剩余定理
题目描述 小C所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M).小C家住在西南角,学校在东北角.现在有T个路口进行施工,小C不能通过这些路口.小C喜欢走最短的路径到达目的 ...
- acm数论之旅--中国剩余定理
ACM数论之旅9---中国剩余定理(CRT)(壮哉我大中华╰(*°▽°*)╯) 中国剩余定理,又名孙子定理o(*≧▽≦)ツ 能求解什么问题呢? 问题: 一堆物品 3个3个分剩2个 5个5个分剩3个 ...
- 卢卡斯定理&&中国剩余定理
卢卡斯定理(模数较小,且是质数) 式子C(m,n)=C(m/p,n/p)*C(m%p,n%p)%p 至于证明(我也不会QAQ,只要记住公式也该就好了). 同时卢卡斯定理一般用于组合数取模上 1.首先当 ...
- gcd,扩展欧几里得,中国剩余定理
1.gcd: int gcd(int a,int b){ ?a:gcd(b,a%b); } 2.中国剩余定理: 题目:学生A依次给n个整数a[],学生B相应给n个正整数m[]且两两互素,老师提出问题: ...
- NOI 2018 屠龙勇士 (拓展中国剩余定理excrt+拓展欧几里得exgcd)
题目大意:略 真是一波三折的一道国赛题,先学了中国剩余定理,勉强看懂了模板然后写的这道题 把取出的宝剑攻击力设为T,可得Ti*x=ai(mod pi),这显然是ax=c(mod b)的形式 这部分用e ...
- POJ 1006:Biorhythms 中国剩余定理
Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 121194 Accepted: 38157 Des ...
- RSA遇上中国剩余定理
1.Introduction 最近读论文刚好用到了这个,之前只是有耳闻,没有仔细研究过,这里就好好捋一下,会逐步完善 不过貌似CRT(中国剩余定理)的实现更容易被攻击 2. RSA: Overview ...
- 《孙子算经》之"物不知数"题:中国剩余定理
1.<孙子算经>之"物不知数"题 今有物不知其数,三三数之剩二,五五数之剩七,七七数之剩二,问物几何? 2.中国剩余定理 定义: 设 a,b,m 都是整数. 如果 m ...
随机推荐
- ubuntu 12.04lts 安装mysql ,并通过QT连接
安装server$ sudo apt-get install mysql-server 安装驱动 $ sudo apt-get install libqt4-sql-mysql $ dpkg --li ...
- flv格式详解+实例剖析
简介 FLV(Flash Video)是现在非常流行的流媒体格式,由于其视频文件体积轻巧.封装播放简单等特点,使其很适合在网络上进行应用,目前主流的视频网站无一例外地使用了FLV格式.另外由于当前浏览 ...
- python 异常处理,约束
异常处理: 在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是显示一个提示的页面. try: pass except Exception,ex: pass 例如: whi ...
- 杂项-Server:Serv-U
ylbtech-杂项-Server:Serv-U Serv-U FTP Server,是一种被广泛运用的FTP服务器端软件,支持3x/9x/ME/NT/2K等全Windows系列.可以设定多个FTP服 ...
- Cookie与Session的复习
Cookie Cookie是HTTP协议制定的.先由服务器保存Cookie到浏览器,再下次浏览器请求服务器时把上一次请求得到Cookie再归还给服务器.由服务器创建保存到客户端浏览器的一个键值对(由服 ...
- 缓存varnish的管理及配置详解
一 工作原理 在当前主流的Web服务架构体系中,Cache担任着越来越重要的作用.常见的基于浏览器的C/S架构,Web Cache更是节约服务器资源的关键.而最近几年由FreeBSD创始人之一Kamp ...
- OD 实验(十七) - 对一个程序的逆向分析
程序: 运行程序 弹出一个对话框,点击 OK 来到主界面,点击 Help -> Register Now 这是输入注册码的地方 按关闭程序的按钮 会提示剩下 30 天的使用时间 用 Ressco ...
- Julia - 分数
在 Julia 中,使用“//”运算符构造分数 julia> 1 // 2 1//2 julia> - 1 // 2 -1//2 分数会自动进行约分 julia> 2 // 4 1/ ...
- centos 6.3 kickstart 装机卡在 unsupported hardware detected 页面
起因 最近厂里一批 dell 新机器 centos 6.3 装机卡在 Unsupported Hardware Detected 页面,要人肉点击 OK 才能继续装机: Unsupported Har ...
- 在Android Studio 0.5.2中使用ArcGIS Android SDK
环境 操作系统:Mac OSX 10.8.5Android Studio: 0.5.2ArcGIS Android SDK: 10.2.3 操作步骤 在Android Studio中新建一个Modul ...




与
同解。