背景简介

孙子定理是中国古代求解一次同余式组的方法。是数论中一个重要定理。又称中国余数定理。一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作《孙子算经》卷下第二十六题,叫做“物不知数”问题,原文如下:
有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?即,一个整数除以三余二,除以五余三,除以七余二,求这个整数。《孙子算经》中首次提到了同余方程组问题,以及以上具体问题的解法,因此在中文数学文献中也会将中国剩余定理称为孙子定理。


原理



模板代码






#include<iostream>
using namespace std;
typedef long long LL;  //数据范围比较大,这里我们统一用long long
LL exgcd(LL a,LL b,LL &x,LL &y)   //扩展欧几里得算法
{if(!b){x=1,y=0;return a;}LL ans=exgcd(b,a%b,x,y);LL t=x;x=y;y=t-a/b*y;return ans;
}
LL mod(LL a,LL b)    //保证a%b取模后的值一定是非负的
{return (a%b+b)%b;
}
int n;
int main()
{scanf("%d",&n);LL m1,a1,m2,a2,k1,k2;scanf("%lld%lld",&a1,&m1);for(int i=1;i<n;i++){scanf("%lld%lld",&a2,&m2);LL d=exgcd(a1,-a2,k1,k2);if((m2-m1)%d)  //如果不能整除,说明无解{printf("%d",-1);return 0;}k1=mod(k1*(m2-m1)/d,abs(a2/d));  //随时取模,保证计算过程中的数为最小,让k的值随时保持最优m1=k1*a1+m1;       //此时的m和a即为合并后x表达式里的m和aa1=abs(a1/d*a2);   //}printf("%lld",mod(m1,a1));   //答案为这个return 0;
}

中国剩余定理(孙子定理) 原理及模板代码相关推荐

  1. 中国剩余定理 (孙子定理) 的证明和代码

    目录 [引入] [中国剩余定理] [代码实现] [借鉴于] [引入] <孙子算经>里有这样一个题目:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何? 术曰:" ...

  2. 中国剩余定理(孙子定理)(精华详细版!)

    问题:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何? 简单点说就是,存在一个数x,除以3余2,除以5余三,除以7余二,然后求这个数.上面给出了解法.再明白这个解法的原理之前,需要 ...

  3. 中国剩余定理(孙子定理)详解

    为什么发现了这个定理,这要源于一道题 淮安民间传说着一则故事--"韩信点兵",其次有成语"韩信点兵,多多益善".韩信带1500名兵士打仗,战死四五百人,站3人一 ...

  4. 中国剩余定理(孙子定理)的证明和c++求解

    <孙子算经>里面的"物不知数"说的是这样的一个题目:一堆东西不知道具体数目,3个一数剩2个,5个一数剩3个,7个一数剩2个,问一共有多少个. 书里面给了计算过程及答案: ...

  5. 孙子定理c语言程序,中国剩余定理(孙子定理)的证明和c++求解

    <孙子算经>里面的"物不知数"说的是这样的一个题目:一堆东西不知道具体数目,3个一数剩2个,5个一数剩3个,7个一数剩2个,问一共有多少个. 书里面给了计算过程及答案: ...

  6. 中国剩余定理——孙子定理

    孙子定理是中国古代求解一次同余式组(见同余)的方法.是数论中一个重要定理.又称中国余数定理. 有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何?即,一个整数除以三余二,除以五余三,除以 ...

  7. 中国剩余定理matlab程序,中国剩余定理即孙子定理的五种解法

    中国剩余定理即孙子定理的五种解法 -- 学习初等数论心得笔记 2013-10-04 博文2015-12修改 "中国剩余定理"是公元5-6世纪.我国南北朝时期的一部著名算术著作< ...

  8. 中国剩余定理(孙子定理)(模板)

    中国剩余定理是求解一次同余式组的方法 当a互质的时候: #include<iostream> #include<cstdio> #include<climits> ...

  9. 中国剩余定理即孙子定理的五种解法

    加深一下理解,找了点纯数学的资料(老者善学,尤老骥伏枥,况乎我也): "中国剩余定理"是公元5-6世纪.我国南北朝时期的一部著名算术著作<孙子算经>中的一个" ...

最新文章

  1. hibernate.hbm.xml配置文件解析
  2. PHP中switch条件语句的使用,php条件语句(2)switch...case语句
  3. 关于Office中对%20的转义问题,请知道的大侠帮忙一起想想招儿!
  4. 期待的程序员的生活并非你想象的那么简单!
  5. Input子系统(二)【转】
  6. 口罩告急,全民互助!“口罩互助”小程序重磅上线!
  7. 周期三角波傅里叶级数例题_傅里叶详解之傅里叶级数
  8. 试点高校网络教育部分公共基础课统一考试计算机应用基础答案,2019年6月试点高校网络教育部分公共基础课统一考试顺利结束...
  9. 服务器(Windows系统)自建蚂蚁(leanote)笔记超详细步骤(包含数据备份和数据还原)
  10. 电动自行车出租管理系统VS开发sqlserver数据库web结构c#编程计算机网页
  11. oracle中to_number字符串转数字、max取最大值、dbms_random.value生成随机数及对小数做截取,四舍五入操作的函数
  12. NSX-T业务转发04—— 多层Tier0Tier1路由
  13. 自动驾驶(十五)---------再论轨迹规划
  14. oracle datamodeler,查看您的 Oracle SQL Developer Data Modeler 设计
  15. 如何在线压缩图片大小?图片上传太大怎么缩小?
  16. matlab软件及基础实验第8单元,《MATLAB统计分析与应用:40个案例分析》程序与数据(内含彩蛋)...
  17. 使用Windows10搭建服务器 ——一次虚拟机实验记录
  18. verilog状态机的三种写法
  19. vscode报Could not find a declaration file for module ‘three/examples/jsm/libs/stats.module.js‘
  20. opencv 单个圆形孔和针检测

热门文章

  1. zepto ajax jsonp,JSONP的使用(在zepto和kissy下使用)
  2. [小魔王荐汤] 177位百万富翁生活习惯的总结
  3. MATLAB 数学应用 线性代数 判断矩阵是否为对称正定矩阵
  4. python天天向上的力量程序代码_天天向上的力量python(举一反三)
  5. 如何装修出好看又实用的厨房,厨房装修流程详解
  6. 头条搜索无法撼动百度,核心战场是内容分发
  7. httpclient海康ISAPI透传
  8. 有故事的程序员必看的六个开源博客系统 | Gitee项目推荐
  9. cesium动态水面
  10. H264码率控制是由三个紧密联系的层次组成