1079 中国剩余定理
基准时间限制:1 秒 空间限制:131072 KB 分值: 0  难度:基础题

 收藏
 关注

一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K。例如,K % 2 = 1, K % 3 = 2, K % 5 = 3。符合条件的最小的K = 23。
Input
第1行:1个数N表示后面输入的质数及模的数量。(2 <= N <= 10)
第2 - N + 1行,每行2个数P和M,中间用空格分隔,P是质数,M是K % P的结果。(2 <= P <= 100, 0 <= K < P)
Output
输出符合条件的最小的K。数据中所有K均小于10^9。
Input示例
3
2 1
3 2
5 3
Output示例
23
中国剩余定理:
在这之前,先记住这俩定理,在看下面文字时,有不懂的就想想这俩定理:

定理1:几个数相加,如果只有一个加数,不能被数a整除,而其他加数均能被数a整除,那么它们的和,就不能被整数a整除。


定理2:二数不能整除,若除数扩大(或缩小)了几倍,而除数不变,则其余数也同时扩大(或缩小)相同的倍数(余数必小于除数)。

我国的数学文化历史悠久。我们的祖先从上古末
开化时代开始,经过许多世代,通过大量的生产实践
和生活实际的研究,创造了许多宝贵的数量文献。
《孙子算经》
(大约公元四世纪、晋朝时期成书)中的“物不知其数”问题的解法是中国数学领先于世界的一个典型例子。它便是最早的
“中国剩余定理”。1.《孙子算经》,最早的“中国剩余定理”
“物不知其数”问题:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?答曰:二十三。书中问题的奇妙解法是:三三数之剩二,置一百四十;五五数之剩三,置六十三;七七数之剩二,置三十。并之得二百三十三,以二百一十减之即得二十三。

该算法用口诀表达是:“三人同行七十稀,五树梅花廿一枝,七子团圆正半月,除百零五便得知。”意思是: 每3个一数最后剩1个就取5和7的公倍数70(先让他剩1,再用定理2),那么“三三数之剩二个”,就取 二倍 个70得140(定理2);每5个一数最后剩1个就取3和7的公倍数21,那么“五五数之剩三个”
,就取 三倍 个21得63;每7个一数最后剩1个就取3和5的公倍数15,那么“七七数之剩二个”,就取 二倍 个15得30。最后把140,63,30三数相加的和再减去3、5、7的公倍数105×2,即得符合条件的最小数为23。于是就有:70×2+21×3+15×2-105×2=23。
(注意看这里,ai就是每个余数了,ti先不管,Mi是除了当下的除数之外的所有除数之积。ai不用求,Mi好求,这里ti怎么求呢?ti的意义就是设ax+by=1之中的x,而a是上面的Mi,b是当前除数,那么by就相当于b个b个数的话,数y组的意思,a就是 除了当下的除数之外的所有除数之积,由于ai都是质数,所以a是其余除数的最小公倍数,那么求出x就是上面绿字过程。怎么求x也就是ti呢?用exgcd解就行)
代码如下:

#include <cstdio>
typedef long long LL;
LL n,chu[11],yu[11];
LL x,y;
void exgcd(LL a,LL b)//exgcd求不定方程ax+by=gcd(a,b)=1(a,b互质)
{if(b==0){x=1;y=0;return ;}exgcd(b,a%b);LL tmp=x;x=y;y=tmp-(a/b)*y;
}
LL chinese()
{LL allji=1;for(int i=0;i<n;i++)//先求出所有的除数之积,以便于球下面的mi {allji=allji*chu[i];}LL ans=0;for(int i=0;i<n;i++){LL mi=allji/chu[i];exgcd(mi,chu[i]);//求x ,也就是ti ans=(ans+(yu[i]*x*mi)%allji)%allji;}if(ans<0)//防止结果是负数 {ans=ans+allji;}return ans;
}
int main()
{scanf("%lld",&n);for(int i=0;i<n;i++){scanf("%lld%lld",&chu[i],&yu[i]);} printf("%lld\n",chinese());return 0;
} 

还有一种写法,也值得学习下(适合小数据):
例7:一个班学生分组做游戏,如果每组三人就多两人,每组五人就多三人,每组七人就多四人,问这个班有多少学生? 
题目可以看成,除3余2,除5余3,除7余4。没有同余的情况,用的方法是“逐步约束法”,就是从“除7余4的数”中找出符合“除5余3的数”,就是再7上一直加7,直到所得的数除5余3。得出数为18,下面只要在18上一直加7和5得最小公倍数35,直到满足“除3余2” 
4+7=11 
11+7=18 
18+35=53
摘自:http://blog.csdn.net/qq_32734731/article/details/51890220
#include <cstdio>
typedef long long LL;
LL n,chu[11],yu[11];
int main()
{scanf("%lld",&n);for(int i=0;i<n;i++){scanf("%lld%lld",&chu[i],&yu[i]);}LL ans=yu[0];LL lcm=1;for(int i=0;i<n-1;i++){lcm=lcm*chu[i];while(ans%chu[i+1]!=yu[i+1]){ans=ans+lcm;}}printf("%lld\n",ans);return 0;
}

51nod:1079 中国剩余定理(数学)相关推荐

  1. 51Nod 1079 中国剩余定理 Label:数论

    一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K.例如,K % 2 = 1, K % 3 = 2, K % 5 = 3.符合条件的最小的K = 23. Input 第1行:1个数N表 ...

  2. 中国剩余定理-模版(互质版)

    1079 中国剩余定理 基准时间限制:1 秒 空间限制:131072 KB 分值: 0  一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K.例如,K % 2 = 1, K % 3 = ...

  3. 中国剩余定理 (51nod 1079)

    一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K.例如,K % 2 = 1, K % 3 = 2, K % 5 = 3.符合条件的最小的K = 23. Input 第1行:1个数N表 ...

  4. 数学--数论--中国剩余定理 拓展 HDU 1788

    再次进行中国余数定理 问题描述 我知道部分同学最近在看中国剩余定理,就这个定理本身,还是比较简单的: 假设m1,m2,-,mk两两互素,则下面同余方程组: x≡a1(mod m1) x≡ a2(mod ...

  5. 数学--数论--中国剩余定理+扩展中国剩余定理(孙子定理)

    中国剩余定理 问题 求解同余方程组 其中m1,m2,m3...mkm_1,m_2,m_3...m_km1​,m2​,m3​...mk​为两两互质的整数 求x的最小非负整数解 定理 令M=∏i=1kmi ...

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

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

  7. 中国剩余定理(Chinese Remainder Theorem)

    中国剩余定理 民间传说着一则故事--"韩信点兵". 秦朝末年,楚汉相争.一次,韩信将1500名将士与楚王大将李锋交战.苦战一场,楚军不敌,败退回营,汉军也死伤四五百人,于是韩信整顿 ...

  8. 为什么计算机的编码那么多,为什么中国剩余定理可用于计算机编码?

    我们已经知道了"中国剩余定理",即"韩信点兵"问题,它是中国古代数学中的一项重大成就,其内容属于数论中的一次同余数组的解法.而这一古老的知识,现在在计算机编码方 ...

  9. Remainders Game (中国剩余定理)

    题意:已知k和一个集合C={c1,c2,c3....cn},问是否有满足集合C的中国剩余定理的解x,使x%k的值唯一确定. 数学知识: #include<iostream> #includ ...

最新文章

  1. BZOJ3133[Baltic2013]ballmachine
  2. 网站前端性能优化之javascript和css
  3. tomcat安全机制j_security_check(简单版)
  4. 青海行--(7月26日)翻越祁连山
  5. 张建锋:一两年内,阿里巴巴100%的业务都会上公共云
  6. 通过什么途径能够深入了解JavaScript引擎是如何工作的?
  7. ASP.NET MVC +EasyUI 权限设计(三)基础模块
  8. Google正在失去DeepMind?
  9. 323 id与小数据池
  10. 编译OpenJDK8 b232版本
  11. TypeError:Cannot read property 'bind' of underfined(React)
  12. 七夕了,男朋友说他想学学算法~
  13. uni-ui简单入门教程 - 如何用HBuilderX为uni-app项目启用uni-ui扩展组件?
  14. ant design vue做导入导出excel
  15. Injective Protocol官方文档翻译(四) -通证经济(Token Economics)
  16. 1053:最大数输出
  17. Python安装教程(附带安装包)
  18. 函数的奇偶性、周期性和单调性
  19. 高新技术企业代办费用多少?
  20. 全志T507如何在Android系统上进行OTA升级

热门文章

  1. 均值滤波及中值滤波的区别
  2. Java HashSet和Java HashMap
  3. Java网络编程以及部分协议的使用说明
  4. 京东商品滞销怎么处理,如何一键清理?
  5. Android多线程下载
  6. 【linux】理解 export PATH、LIBRARY_PATH、 LD_LIBRARY_PATH
  7. python文件路径path
  8. linux桌面文件夹路径是什么,【已解决】Ubuntu中右键(桌面和文件夹)打开终端(定位到当前路径)...
  9. 最大似然估计log likelihood
  10. 云计算前景如何?大专学历学习云计算怎么样?