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 ...
随机推荐
- lbypmall虚拟主机的设置
虚拟机配置不完整,导致访问是样式路径不正确,问题可能是config.inc.php配置不正确 1.修改/etc/php.ini 访问目录限制 open_basedir =/home/upload/:/ ...
- 从汇编的角度看待变量类型与sizeof的机制
1.动机:前段时间,一直有个疑问,就是编译器是从哪里知道数据的类型的,数据的类型是存在内存里面的么,因为自己调试编译器,发现内存中并没有多余的数据,后来在群上发问,才知道数据在编译成汇编的过程就知道数 ...
- GOF23设计模式之观察者模式(observer)
一.观察者模式概述 观察者模式主要用于 1 :N 的通知.当一个对象(目标对象 Subject 或 Observable)的状态变化时,它需要通知一系列对象(观察者对象 Observer),令它们做出 ...
- [转]第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建
目录: 1.gradle的概念 2.gradle配置jar包,和libs文件夹导入jar包的区别 3.签名打包: (1)Studio (2)命令行 (3)gradle wrapper的原理 4.Bui ...
- Entity Framework使用汇总
EF的发展历程 还是先来说一下EF从诞生到现在这几年的发展历程吧.在EF最初的版本中,作为一个ORM组件其通过EDM文件(里面是一些xml)来配置数据库与实体类之间的映射,实现数据进出数据库的控制.最 ...
- ghostscript 远程命令执行漏洞复现
影响的版本 <= 9.23(全版本.全平台) Ubuntu 开启 ghostscript sch01ar@ubuntu:~$ gs -q -sDEVICE=ppmraw -dSAFER -s0u ...
- 分享Axure RP8.0激活码一份
用户名:aaa 注册码:2GQrt5XHYY7SBK/4b22Gm4Dh8alaR0/0k3gEN5h7FkVPIn8oG3uphlOeytIajxGU
- Warning: require(): open_basedir restriction in effect. File(/www/wwwroot/../thinkphp/start.php) is not within the allowed path(s):
Warning: require(): open_basedir restriction in effect. File(/www/wwwroot//../thinkphp/start.php) is ...
- update project maven项目的时候出错
preference node "org.eclipse.wst.validation"has been remove 上面的错误是因为修改包名无法互相引入导致的,仅仅需要将Ecl ...
- Python实践练习:口令保管箱
缘由 做中学才是最好的方法,通过这些项目来加强自己的Python掌握程度. 所有练习目录地址 题目描述: 一个字典中存在着账户和密码,通过命令行参数直接执行,查看是否有这个账户. 若有,则复制账户的密 ...




与
同解。