Nod51 1079 中国剩余定理 Label:数论

一个正整数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 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<algorithm>
 5 #define ll long long
 6 using namespace std;
 7
 8 ll x,y,n,a[15],m[15];
 9 ll exgcd(ll a,ll b){
10     if(b==0){
11         x=1;y=0;return a;
12     }
13     ll g=exgcd(b,a%b);
14     ll t=x;
15     x=y;
16     y=t-(a/b)*y;
17     return g;
18 }
19
20
21 ll CRT()
22 {
23     ll M = 1;
24     ll ans = 0;
25     for(ll i=1; i<=n; i++)
26         M *= m[i];
27     for(ll i=1; i<=n; i++)
28     {
29         x=0, y=0;
30         ll Mi = M / m[i];
31         exgcd(Mi, m[i]);
32         ans = (ans + Mi * x * a[i]) % M;
33     }
34     if(ans < 0) ans += M;
35     return ans;
36 }
37
38 int main(){
39 //    freopen("01.in","r",stdin);
40
41     scanf("%d",&n);
42     for(ll i=1;i<=n;i++){
43         scanf("%d%d",&m[i],&a[i]);
44     }
45     cout<<CRT()<<endl;
46     return 0;
47 }

转载代码 不予展示

请在弄懂或者背下 扩展欧几里得算法同余 的概念或代码后来看这道题

建议先去百度百科逛一圈(我已经放弃了wiki。。)

听大神讲CRT http://blog.csdn.net/acdreamers/article/details/8050018

看大神证明CRT http://blog.csdn.net/hard_man/article/details/7732795

提示,好好看~

时间: 2024-10-10 01:41:57

Nod51 1079 中国剩余定理 Label:数论的相关文章

中国剩余定理【数论】

中国剩余定理的具体描述是这样的: 给出你n个ai和mi,最后让求出x的最小值是多少. 中国剩余定理说明:假设整数m1, m2, ... , mn两两互质,则对任意的整数:a1, a2, ... , an,方程组有解,并且通解可以用如下方式构造得到: 设是整数m1, m2, ... , mn的乘积,并设是除了mi以外的n - 1个整数的乘积. 设为模的数论倒数: 方程组的通解形式为: 在模的意义下,方程组只有一个解: 分割线 下面我们来看一个具体的例子: 使用中国剩余定理来求解上面的"物不知数&q

韩信点兵(中国剩余定理)

中国剩余定理是数论中的一个关于一元线性同余方程组的定理,说明了一元线性同余方程组有解的准则以及求解方法.又称为孙子定理,"韩信点兵""求一术""鬼谷算""隔墙算""剪管术""秦王暗点兵""物不知数"等名称. 例如:物不知数原文: 有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何? 宋朝数学家秦九韶对"物不知数"问题作出了完整系统的解

数论F - Strange Way to Express Integers(不互素的的中国剩余定理)

F - Strange Way to Express Integers Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%I64d & %I64u Submit Status Description Elina is reading a book written by Rujia Liu, which introduces a strange way to express non-negative integers.

【中国剩余定理】【容斥原理】【快速乘法】【数论】HDU 5768 Lucky7

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 题目大意: T组数据,求L~R中满足:1.是7的倍数,2.对n个素数有 %pi!=ai  的数的个数. 题目思路: [中国剩余定理][容斥原理][快速乘法][数论] 因为都是素数所以两两互素,满足中国剩余定理的条件. 把7加到素数中,a=0,这样就变成解n+1个同余方程的通解(最小解).之后算L~R中有多少解. 但是由于中国剩余定理的条件是同时成立的,而题目是或的关系,所以要用容斥原理叠加删

数论快速入门(同余、扩展欧几里德、中国剩余定理、大素数测定和整数分解、素数三种筛法、欧拉函数以及各种模板)

数学渣渣愉快的玩了一把数论,来总结一下几种常用的算法入门,不过鶸也是刚刚入门, 所以也只是粗略的记录下原理,贴下模板,以及入门题目(感受下模板怎么用的) (PS:文中蓝色字体都可以点进去查看百度原文) 附赠数论入门训练专题:点我打开专题(题目顺序基本正常,用以配套数论入门) 一.同余定理 简单粗暴的说就是:若 a-b == m 那么 a%m == b%m 这个模运算性质一眼看出...直接上入门水题: Reduced ID Numbers 附AC代码(这个也没啥模板....知道就好) #inclu

数论基础题目八题【欧几里得】【筛法素数】【中国剩余定理】

之前看的数论的知识,现在做几道题目找找感觉..... poj 1061 传送门 题目大意,给你x,y,m,n,L.代表青蛙a的坐标x,青蛙b的坐标y,青蛙a一次跳的距离m,青蛙b一次跳的距离n,以及mod的值L,求经过多少次跳相遇.即求:(m-n)*x0=(x-y)(mod L);  模线性方程的解,不过要注意处理,因为(m-n)和(x-y)有可能是负的,如果(m-n)是负的,则直接对俩数取负数,下面就是对 ((x-y)+L)%L. 然后就能用modular_linear_equation(LL

POJ 1006 Biorhythms (数论-中国剩余定理)

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 111285   Accepted: 34638 Description Some people believe that there are three cycles in a person's life that start the day he or she is born. These three cycles are the physical,

Lucas定理 中国剩余定理 数论

逆元: 若 a*b=1(%p) 则a是b在%p意义下的逆元.  则在%p意义下  一个数 除以a就等价于乘b 两种求逆元方法:1.若p为质数时,则有性质则a^(p-1)=1(%p) .   即a*a^(p-2)=1(%p).   所以a的逆元就是a^(p-2)  2.exgcd(a,b,x,y) 可求 ax+by=c=gcd(a,b)  若a,b互质 则可求a%b下的逆元 Lucas定理:{ 求C(n,m)在%p下的值    (p是质数)    -- Lucas(n,m,p)=c(n%p,m%p

poj1006生理周期(中国剩余定理)

1 /* 2 中国剩余定理可以描述为: 3 若某数x分别被d1..….dn除得的余数为r1.r2.….rn,则可表示为下式: 4 x=R1r1+R2r2+…+Rnrn+RD 5 其中R1是d2.d3.….dn的公倍数,而且被d1除,余数为1:(称为R1相对于d1的数论倒数) 6 R1 . 7 R2 . 8 … . 9 Rn是d1.d2.….dn-1的公倍数,而且被dn除,余数为1: 10 D是d1.d2.….的最小公倍数: 11 R是任意整数(代表倍数),可根据实际需要决定: 12 且d1..…