[数论]拓展中国剩余定理
拓展中国剩余定理
•拓展中国剩余定理
拓展中国剩余定理是用来解同余方程
$\begin{cases}x\equiv c_{1}\left( mod\ m_{1}\right) \\ x\equiv c_{2}\left( mod\ m_{2}\right) \\ \ldots \\ x\equiv c_n\left( mod\ m_n\right) \end{cases}$
ps.如果m1,m2,m3...mn两两互素的话,可以用中国剩余定理来求
•过程
假设
$x\equiv c_{1} (mod \ m_{1})$ ①
$x\equiv c_{1} (mod \ m_{2})$ ②
则
$x=c_{1}+m_{1}k_{1}$ ③
$x=c_{2}+m_{1}k_{2}$ ④
③=④得 $m_{1}k_{1}=c_{2}-c_{1}+m_{2}k_{2}$ ⑤
设$t=gcd(m1,m2)$
⑤ 两边同时除以t 得
$\frac{m_{1}k_{1}}{t}=\frac{c_{2}-c_{1}}{t}+\frac{m_{2}k_{2}}{t}$ ⑥
⑥ $mod \ \frac{m_{2}}{t}$得
$k_{1}\frac{m_{1}}{t}\equiv \frac{c_{2}-c_{1}}{t}(mod \ \frac{m_{2}}{t})$ ⑦
则$k_{1}=inv(\frac{m_{1}}{t},\frac{m_{2}}{t})\cdot \frac{c_{2}-c_{1}}{t}+\frac{m_{2}}{t}\cdot y$⑧
将⑧代入①
$x=inv(\frac{m_{1}}{t},\frac{m_{2}}{t})\cdot \frac{c_{2}-c_{1}}{t}\cdot m_{1}+\frac{m_{1}m_{2}}{t}y+c_{1}$
则$x\equiv inv(\frac{m_{1}}{t},\frac{m_{2}}{t})\cdot \frac{c_{2}-c_{1}}{t}\cdot m_{1}+c_{1}(mod \ \frac{m_{1}m_{2}}{t})$
可以看出,x的值与$\frac{c_{2}-c_{1}}{t}$有关
所以,当$(c_{2}-c_{1})|gcd(m_{1},m_{2})$时,x有解
若化成 $x\equiv c (mod \ m)$
则$m=\frac{c_{2}-c_{1}}{t}$
$c=inv(\frac{m_{1}}{t},\frac{m_{2}}{t})\cdot \frac{c_{2}-c_{1}}{t}$%$\frac{m_{2}}{t}\cdot m_{1}+c_{1}$
•结论
通过中国剩余定理可以把两个同余式转化成一个新的同余式式
那推广一下n个同余式合并,
两个同余式求解之后得到一个新的同余式
再把新的同余式和其他的联立
最终就可以求出满足条件的解
•模板
1 #include<cstdio> 2 using namespace std; 3 typedef long long ll; 4 ll n; 5 ll a[100010],b[100010]; 6 ll mul(ll A,ll B,ll mod) //快速乘取余 模板 7 { 8 ll ans=0; 9 while(B>0) 10 { 11 if(B & 1) ans=(ans+A%mod)%mod; 12 A=(A+A)%mod; 13 B>>=1; 14 } 15 return ans; 16 } 17 ll exgcd(ll A,ll B,ll &x,ll &y) //扩展欧几里得 模板 18 { 19 if(!B) 20 { 21 x=1,y=0; 22 return A; 23 } 24 ll d=exgcd(B,A%B,x,y); 25 ll tmp=x; 26 x=y , y=tmp-A/B*y; 27 return d; 28 } 29 ll lcm(ll A,ll B) //求最小公倍数 30 { 31 ll xxx,yyy; 32 ll g=exgcd(A,B,xxx,yyy); 33 return (A/g*B); 34 } 35 ll excrt() //重点:求解同余方程组 36 { 37 ll x,y; 38 ll M=b[1],ans=a[1]; //赋初值 39 //M为前k-1个数的最小公倍数,ans为前k-1个方程的通解 40 for(int i=2;i<=n;i++) 41 { 42 ll A=M,B=b[i]; 43 ll C=(a[i]-ans%B+B)%B; //代表同余方程 ax≡c(mod b) 中a,b,c 44 45 ll g=exgcd(A,B,x,y); 46 //求得A,B的最大公约数,与同余方程ax≡gcd(a,b)(mod b)的解, 47 48 if(C%g) return -1; //无解的情况 49 50 x=mul(x,C/g,B); //求得x的值,x即t 51 ans+=x*M; //获得前k个方程的通解 52 M=lcm(M,B); //更改M的值 53 ans=(ans%M+M)%M; 54 } 55 return ans; 56 } 57 int main() 58 { 59 scanf("%lld",&n); 60 for(int i=1;i<=n;i++) 61 scanf("%lld%lld",&b[i],&a[i]); 62 ll ans=excrt(); 63 printf("%lld",ans); 64 }View Code
转载于:https://www.cnblogs.com/MMMinoz/p/11385728.html
[数论]拓展中国剩余定理相关推荐
- ACM数论----中国剩余定理与拓展中国剩余定理
一.问题引入: 在<孙子算经>中有这样一个问题:"今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?"这个问 ...
- CF338D GCD Table(拓展中国剩余定理,细节处理,2900分)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 CF338D GCD Table(拓展中国剩余定理,细节处理,2900分) Problem 有一张 n ...
- 中国剩余定理学习 拓展中国剩余定理
中国剩余定理学习 && 拓展中国剩余定理 中国剩余定理: 拓展中国剩余定理: 中国剩余定理: 仅供自己复习时查看一下大佬笔记,详细学习过程在大佬的博客. 学习连接:https://ww ...
- 中国剩余定理拓展中国剩余定理
复习 中国剩余定理: x ≡ a 1 ( m o d m 1 ) x ≡a_1(mod m_1) x≡a1(modm1) x ≡ a 2 ( m o d m 2 ) x ≡a_2(mod m_2) ...
- 【原创】 中国剩余定理 和 拓展中国剩余定理
孙子 Preface 数论学习Part 7. 每天进步一点点,退役不会太丢脸. 联赛只剩十五天,隔靴搔痒智何添? 剩余定理四天一篇,动归图论又几何,数据结构似云烟. 莫再等闲,莫忘时间. CRT 我们 ...
- 数学:拓展中国剩余定理
拓展中国剩余定理解决模数不互质同余方程组 如果模数互质的话,直接中国剩余定理就可以了 但是如果模数不互质又没有接触这个方法就凉凉了 推是很不好推出来的 假设我们这里有两个方程: x=a1∗x1+b1 ...
- 数论-扩展中国剩余定理
求解 n 个同余方程 x ≡ Ci (mod Mi) 推荐一下讲证明的文章: 1.https://www.cnblogs.com/TheRoadToTheGold/p/8458326.html 很简洁 ...
- 与数论的厮守04:扩展中国剩余定理
根据数论的尿性,一般的定理解决不了的问题怎么办?那就拓展一下呗. 我们先看中国剩余定理,它解决的是一堆同余方程:nΞa1(mod b1),nΞa2(mod b2)...nΞak(mod bk),其中b ...
- 数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法
打死没想到会在H老师处学懂数论 同余,整除 模运算 埃式筛法 欧拉筛法 最大公约数和最小公倍数 辗转相除法 更相减损术 裴蜀定理 威尔逊定理 费马定理 同余等价类.剩余系.缩系 欧拉函数 欧拉定理 扩 ...
最新文章
- numpy rollaxis理解
- [网站链接]Debbie博客上的链接: [求职网站][博客链接][信息资源]……
- AI顶会直播丨深度学习顶级会议ICLR 2021中国预讲会明天召开,为期三天五大论坛...
- Android中级教程之--------Android应用程序的生命周期(一定要理解,面试会问的哦!)
- java excel解析视频教程_java解析Excel(xls、xlsx两种格式)
- 比利时女摄影师玛瑞亚
- Linux6.8 ssh开启,CentOS 6.8升级 ssh到最新版SSH-8.2p1
- linux文件测试操作
- Bootstrap CSS 编码规范之带前缀的属性
- android 系统(8)---Android 学习网站汇总
- c语言 单片机模拟,【51单片机】普通I/O口模拟SPI口C语言程序
- 乐鑫再次称王WiFi MCU市场
- Android应用分类
- “电脑开的热点手机连接不上”的问题寻解过程记录
- 编码 8421BCD 码的故事
- 英汉互译在线翻译-英文翻译中文的翻译
- input不能输入的问题
- JSD-2204-RESTful-Service-SpringMVC-Day06
- 配置华为s系列交换机mode lacp
- ceil函数和floor函数的用法
热门文章
- 火狐浏览器服务器意外响应,Firefox 火狐浏览器 83 发布,已修复任意代码执行漏洞...
- 网易云音乐一键听歌300首_网易云打卡,一键听歌300首。
- mysql函数及解析,Mysql研究之MySQL常用内置函数完全解析
- 【Mybatis】sqlSessionTemplate.getConnection() 遇到 java.sql.SQLException: Connection is closed
- 【SSL】java keytool工具创建自己的(localhost)(JKS)证书库
- xml怎么转换html文件,xml转换成html文件方法
- python 手机测试_python脚本如何测试手机
- php memcached get,PHP Memcached操作类
- 华为荣耀20和x10比较_荣耀x10和荣耀20Pro哪个值得入手 荣耀x10和荣耀20Pro参数对比...
- 风控建模 python 知乎_风控建模基本要求及面试问题小结