51nod:1079 中国剩余定理(数学)
第1行:1个数N表示后面输入的质数及模的数量。(2 <= N <= 10) 第2 - N + 1行,每行2个数P和M,中间用空格分隔,P是质数,M是K % P的结果。(2 <= P <= 100, 0 <= K < P)
输出符合条件的最小的K。数据中所有K均小于10^9。
3 2 1 3 2 5 3
定理1:几个数相加,如果只有一个加数,不能被数a整除,而其他加数均能被数a整除,那么它们的和,就不能被整数a整除。
定理2:二数不能整除,若除数扩大(或缩小)了几倍,而除数不变,则其余数也同时扩大(或缩小)相同的倍数(余数必小于除数)。
我国的数学文化历史悠久。我们的祖先从上古末
开化时代开始,经过许多世代,通过大量的生产实践
和生活实际的研究,创造了许多宝贵的数量文献。
《孙子算经》
(大约公元四世纪、晋朝时期成书)中的“物不知其数”问题的解法是中国数学领先于世界的一个典型例子。它便是最早的
“中国剩余定理”。1.《孙子算经》,最早的“中国剩余定理”
“物不知其数”问题:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?答曰:二十三。书中问题的奇妙解法是:三三数之剩二,置一百四十;五五数之剩三,置六十三;七七数之剩二,置三十。并之得二百三十三,以二百一十减之即得二十三。
,就取 三倍 个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。
#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;
}
题目可以看成,除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
#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 中国剩余定理(数学)相关推荐
- 51Nod 1079 中国剩余定理 Label:数论
一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K.例如,K % 2 = 1, K % 3 = 2, K % 5 = 3.符合条件的最小的K = 23. Input 第1行:1个数N表 ...
- 中国剩余定理-模版(互质版)
1079 中国剩余定理 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K.例如,K % 2 = 1, K % 3 = ...
- 中国剩余定理 (51nod 1079)
一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K.例如,K % 2 = 1, K % 3 = 2, K % 5 = 3.符合条件的最小的K = 23. Input 第1行:1个数N表 ...
- 数学--数论--中国剩余定理 拓展 HDU 1788
再次进行中国余数定理 问题描述 我知道部分同学最近在看中国剩余定理,就这个定理本身,还是比较简单的: 假设m1,m2,-,mk两两互素,则下面同余方程组: x≡a1(mod m1) x≡ a2(mod ...
- 数学--数论--中国剩余定理+扩展中国剩余定理(孙子定理)
中国剩余定理 问题 求解同余方程组 其中m1,m2,m3...mkm_1,m_2,m_3...m_km1,m2,m3...mk为两两互质的整数 求x的最小非负整数解 定理 令M=∏i=1kmi ...
- 中国剩余定理(孙子定理)的证明和c++求解
<孙子算经>里面的"物不知数"说的是这样的一个题目:一堆东西不知道具体数目,3个一数剩2个,5个一数剩3个,7个一数剩2个,问一共有多少个. 书里面给了计算过程及答案: ...
- 中国剩余定理(Chinese Remainder Theorem)
中国剩余定理 民间传说着一则故事--"韩信点兵". 秦朝末年,楚汉相争.一次,韩信将1500名将士与楚王大将李锋交战.苦战一场,楚军不敌,败退回营,汉军也死伤四五百人,于是韩信整顿 ...
- 为什么计算机的编码那么多,为什么中国剩余定理可用于计算机编码?
我们已经知道了"中国剩余定理",即"韩信点兵"问题,它是中国古代数学中的一项重大成就,其内容属于数论中的一次同余数组的解法.而这一古老的知识,现在在计算机编码方 ...
- Remainders Game (中国剩余定理)
题意:已知k和一个集合C={c1,c2,c3....cn},问是否有满足集合C的中国剩余定理的解x,使x%k的值唯一确定. 数学知识: #include<iostream> #includ ...
最新文章
- BZOJ3133[Baltic2013]ballmachine
- 网站前端性能优化之javascript和css
- tomcat安全机制j_security_check(简单版)
- 青海行--(7月26日)翻越祁连山
- 张建锋:一两年内,阿里巴巴100%的业务都会上公共云
- 通过什么途径能够深入了解JavaScript引擎是如何工作的?
- ASP.NET MVC +EasyUI 权限设计(三)基础模块
- Google正在失去DeepMind?
- 323 id与小数据池
- 编译OpenJDK8 b232版本
- TypeError:Cannot read property 'bind' of underfined(React)
- 七夕了,男朋友说他想学学算法~
- uni-ui简单入门教程 - 如何用HBuilderX为uni-app项目启用uni-ui扩展组件?
- ant design vue做导入导出excel
- Injective Protocol官方文档翻译(四) -通证经济(Token Economics)
- 1053:最大数输出
- Python安装教程(附带安装包)
- 函数的奇偶性、周期性和单调性
- 高新技术企业代办费用多少?
- 全志T507如何在Android系统上进行OTA升级
热门文章
- 均值滤波及中值滤波的区别
- Java HashSet和Java HashMap
- Java网络编程以及部分协议的使用说明
- 京东商品滞销怎么处理,如何一键清理?
- Android多线程下载
- 【linux】理解 export PATH、LIBRARY_PATH、 LD_LIBRARY_PATH
- python文件路径path
- linux桌面文件夹路径是什么,【已解决】Ubuntu中右键(桌面和文件夹)打开终端(定位到当前路径)...
- 最大似然估计log likelihood
- 云计算前景如何?大专学历学习云计算怎么样?