中国剩余定理

在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。具体解法分三步:

  • 找出三个数:从3和5的公倍数中找出被7除余1的最小数15,从3和7的公倍数中找出被5除余1 的最小数21,最后从5和7的公倍数中找出除3余1的最小数70。
  • 用15乘以2(2为最终结果除以7的余数),用21乘以3(3为最终结果除以5的余数),同理,用70乘以2(2为最终结果除以3的余数),然后把三个乘积相加15∗2+21∗3+70∗2得到和233。
  • 用233除以3,5,7三个数的最小公倍数105,得到余数23,即233%105=23。这个余数23就是符合条件的最小数。

类比古人 我们假设n1除以3余2,n2除以5余3,n3除以7余2;
且n1+n2+n3满足

  1. 使n1+n2+n3的和满足除以3余2,n2和n3必须是3的倍数。
  2. 使n1+n2+n3的和满足除以5余3,n1和n3必须是5的倍数。
  3. 使n1+n2+n3的和满足除以7余2,n1和n2必须是7的倍数。
    因此,为使n1+n2+n3的和作为“孙子问题”的一个最终解,需满足
    1.n1 除以3余2,且是5和7的公倍数。
    2.n2除以5余3,且是3和7的公倍数。
    3.n3 除以7余2,且是3和5的公倍数。
    再使用逆元 即可求解

    有整数解(mi两两互质)

    Mi为M/mi; M i − 1 Mi^{-1} Mi−1为Mi的逆元

crt 板子

#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
ll a[150],b[150],n,m=1,ans=0;
ll exgcd(ll a,ll b,ll &x,ll &y)
{ll d;if(b==0){x=1;y=0;return a;}else{d=exgcd(b,a%b,x,y);ll t=x;x=y;y=t-a/b*y;return d; }
}
ll x,y,mi,d;
int main()
{scanf("%lld",&n);for(ll i=1;i<=n;i++){scanf("%lld%lld",&a[i],&b[i]);m*=a[i];}for(ll i=1;i<=n;i++){mi=m/a[i];d=exgcd(mi,a[i],x,y);ans=((ans+mi*x*b[i])%m+m)%m;}printf("%lld\n",ans);return 0;
}

excrt

excrt Code 板子


#include<bits/stdc++.h>
#define ll __int128
using namespace std;
ll x,y,d,n;
void exgcd(ll a,ll b,ll &x,ll &y){if(!b) d=a,x=1,y=0;else exgcd(b,a%b,y,x),y-=a/b*x;
}
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;
}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;
}
ll a,b,A,B;
void merge(){exgcd(a,A,x,y);ll c=B-b;if(c%d) puts("-1"),exit(0);x=(x*c/d+A/d)%(A/d);ll mod=lcm(a,A);b=(a*x+b+mod)%mod;a=mod;
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){long long u,v;scanf("%lld%lld",&u,&v);A=u,B=v;if(i>1) merge();else a=A,b=B;}printf("%lld\n",(long long)(b%a));
}

中国剩余定理/扩展中剩余定理相关推荐

  1. 中国剩余定理 扩展中国剩余定理

    一.中国剩余定理 对于 x ≡ a1(mod m1) x ≡ a2(mod m2) x ≡ a3(mod m3) ---- 且 m1 m2 m3-两两互质 此时可运用中国剩余定理 首先求出 s=m1m ...

  2. 中国剩余定理扩展中国剩余定理

    中国剩余定理(CRT): 若 m1, m2,...,mk  两两互质,则同余方程组 x≡a1 (mod m1) x≡a2 (mod m2) ------- x≡ak (mod mk) 有整数解,解为 ...

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

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

  4. 中国剩余定理和扩展中国剩余定理

    也许更好的阅读体验 文章目录 前置知识 中国剩余定理(CRT) 目的 求法 Code 扩展中国剩余定理(EXCRT) 目的 解法 code 前置知识 快速乘 扩展欧几里得定理 同余方程 中国剩余定理( ...

  5. 中国剩余定理与扩展中国剩余定理

    中国剩余定理又名孙子定理 用来求解同余线性方程组 其中m1,m2,m3-两两互质,求x的最小整数解: 设M为m1,m2,m3-的公倍数. 根据上面的推导,为什么x的通解形式是累加呢? 根据上面推导,推 ...

  6. 中国剩余定理及扩展中国剩余定理

    目录 中国剩余定理CRT 扩展中国剩余定理ExCRT TJOI2009 猜数字 HDU 1573 X问题 中国剩余定理CRT 中国剩余定理是用来求线性同于方程组的. \[ \begin{aligned ...

  7. 博客处女作:中国剩余定理与扩展中国剩余定理

    各位好啊,这里是蒟蒻gigo_64的第一篇博客,,这里我们开始啦. 本文需要读者知晓扩展欧几里得,如果不会请点击这个大佬的链接;https://blog.csdn.net/sslz_fsy/artic ...

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

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

  9. 中国剩余定理又叫孙子定理

    中国剩余定理又叫孙子定理 在<孙子算经>中有这样一个问题:"今有物不知其数,三三数之剩二(除以333余222),五五数之剩三(除以555余333),七七数之剩二(除以777余22 ...

最新文章

  1. 几个比较冷门的prototype扩展方法:去掉html标签、去掉a标签、去掉style样式,以及判断是否为html代码的代码片段
  2. centos ntfs-3g 安装和使用
  3. 2 年来,每个人最该感谢的,是坚持学习、用心分享的自己
  4. 8个字典常用的内置函数,一次性给你总结了!
  5. apache重写规则转Nginx
  6. (8) ebj学习: Jpa的SINGLE_TABLE,JOINED,TABLE_PER_CLASS三种继承策略
  7. hibernate 继承_Hibernate继承:每个类层次结构的表
  8. OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
  9. Jsp链接传值中文乱码问题解决
  10. html添加田字,兆加页(是加三个田是什么字)
  11. 外螺纹对照表_螺纹螺距对照表
  12. 已知基因名,如何在genbank中查询基因序列?
  13. 小米 12S Utra 莱卡水印生成在线工具
  14. shardingsphere源码分析(四)-- 改写引擎
  15. base64 的加密和解密
  16. linux 把进程调到前台,【如何将后台运行的程序转到前台来?】
  17. Mysql出现问题:ERROR 2058: Plugin caching_sha2_passward could not be loaded解决方案
  18. 企业如何做好电子邮件营销?做好这4点,客户回头率高!
  19. Go 程序设计语言书中 源码
  20. 第04篇:Guava-retry重试组件

热门文章

  1. 支付宝支付之扫码支付(电脑网站支付)、H5支付(手机网站支付)相关业务流程分析总结
  2. 国外经典网页设计:50个优秀的移动网站设计实例
  3. 怎么跳槽?这七步走完,你完全可以面试大厂了
  4. 浩方vip帐号的试用方法(转贴)
  5. 基于电子地图开发的电力行业应用
  6. Windows版本纵横谈—— MSDN版、OEM版、RTM版有什么不同?
  7. Linux系统十大最佳发行版本,哪个最受开发者欢迎?
  8. 2010年,哪些智能手机很热门?
  9. springboot+jsp停车场车位租赁管理系统
  10. 虚幻4学习笔记(10)蓝图接口、拾取物品-射线检测