拓展中国剩余定理

•拓展中国剩余定理

拓展中国剩余定理是用来解同余方程

$\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

[数论]拓展中国剩余定理相关推荐

  1. ACM数论----中国剩余定理与拓展中国剩余定理

    一.问题引入: 在<孙子算经>中有这样一个问题:"今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?"这个问 ...

  2. CF338D GCD Table(拓展中国剩余定理,细节处理,2900分)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 CF338D GCD Table(拓展中国剩余定理,细节处理,2900分) Problem 有一张 n ...

  3. 中国剩余定理学习 拓展中国剩余定理

    中国剩余定理学习 && 拓展中国剩余定理 中国剩余定理: 拓展中国剩余定理: 中国剩余定理: 仅供自己复习时查看一下大佬笔记,详细学习过程在大佬的博客. 学习连接:https://ww ...

  4. 中国剩余定理拓展中国剩余定理

    复习 中国剩余定理: 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) ...

  5. 【原创】 中国剩余定理 和 拓展中国剩余定理

    孙子 Preface 数论学习Part 7. 每天进步一点点,退役不会太丢脸. 联赛只剩十五天,隔靴搔痒智何添? 剩余定理四天一篇,动归图论又几何,数据结构似云烟. 莫再等闲,莫忘时间. CRT 我们 ...

  6. 数学:拓展中国剩余定理

    拓展中国剩余定理解决模数不互质同余方程组 如果模数互质的话,直接中国剩余定理就可以了 但是如果模数不互质又没有接触这个方法就凉凉了 推是很不好推出来的 假设我们这里有两个方程: x=a1∗x1+b1 ...

  7. 数论-扩展中国剩余定理

    求解 n 个同余方程 x ≡ Ci (mod Mi) 推荐一下讲证明的文章: 1.https://www.cnblogs.com/TheRoadToTheGold/p/8458326.html 很简洁 ...

  8. 与数论的厮守04:扩展中国剩余定理

    根据数论的尿性,一般的定理解决不了的问题怎么办?那就拓展一下呗. 我们先看中国剩余定理,它解决的是一堆同余方程:nΞa1(mod b1),nΞa2(mod b2)...nΞak(mod bk),其中b ...

  9. 数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法

    打死没想到会在H老师处学懂数论 同余,整除 模运算 埃式筛法 欧拉筛法 最大公约数和最小公倍数 辗转相除法 更相减损术 裴蜀定理 威尔逊定理 费马定理 同余等价类.剩余系.缩系 欧拉函数 欧拉定理 扩 ...

最新文章

  1. numpy rollaxis理解
  2. [网站链接]Debbie博客上的链接: [求职网站][博客链接][信息资源]……
  3. AI顶会直播丨深度学习顶级会议ICLR 2021中国预讲会明天召开,为期三天五大论坛...
  4. Android中级教程之--------Android应用程序的生命周期(一定要理解,面试会问的哦!)
  5. java excel解析视频教程_java解析Excel(xls、xlsx两种格式)
  6. 比利时女摄影师玛瑞亚
  7. Linux6.8 ssh开启,CentOS 6.8升级 ssh到最新版SSH-8.2p1
  8. linux文件测试操作
  9. Bootstrap CSS 编码规范之带前缀的属性
  10. android 系统(8)---Android 学习网站汇总
  11. c语言 单片机模拟,【51单片机】普通I/O口模拟SPI口C语言程序
  12. 乐鑫再次称王WiFi MCU市场
  13. Android应用分类
  14. “电脑开的热点手机连接不上”的问题寻解过程记录
  15. 编码 8421BCD 码的故事
  16. 英汉互译在线翻译-英文翻译中文的翻译
  17. input不能输入的问题
  18. JSD-2204-RESTful-Service-SpringMVC-Day06
  19. 配置华为s系列交换机mode lacp
  20. ceil函数和floor函数的用法

热门文章

  1. 火狐浏览器服务器意外响应,Firefox 火狐浏览器 83 发布,已修复任意代码执行漏洞...
  2. 网易云音乐一键听歌300首_网易云打卡,一键听歌300首。
  3. mysql函数及解析,Mysql研究之MySQL常用内置函数完全解析
  4. 【Mybatis】sqlSessionTemplate.getConnection() 遇到 java.sql.SQLException: Connection is closed
  5. 【SSL】java keytool工具创建自己的(localhost)(JKS)证书库
  6. xml怎么转换html文件,xml转换成html文件方法
  7. python 手机测试_python脚本如何测试手机
  8. php memcached get,PHP Memcached操作类
  9. 华为荣耀20和x10比较_荣耀x10和荣耀20Pro哪个值得入手 荣耀x10和荣耀20Pro参数对比...
  10. 风控建模 python 知乎_风控建模基本要求及面试问题小结