中国剩余定理

【CRT】中国剩余定理简介

旧城冷巷雨未停 提交于 2019-11-26 13:45:26
中国剩余定理(CRT) 中国剩余定理出自中国的某本古书,似乎是孙子兵法?(雾 其中有这样一个问题: 有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何? 即,对于这样一个方程组: \[ \begin{cases}x\equiv a_1\pmod{m_1}\\x\equiv a_2\pmod{m_2}\\x\equiv a_3\pmod{m_3}\\\dots\\x\equiv a_i\pmod{m_i}\end{cases} \] 我们已知所有 \(a_i,m_i\) ,求可行解 \(x\) ,可以证明的是, 若所有 \(m_i\) 互质,那么该方程组有唯一解。 可以构造出一个解:如果有 \(k\) 个方程,设 \(M=\prod_{i=1}^k m_i,n_i=\frac{M}{m_i}\) ,则有 \(x=\sum_{i=1}^k a_in_in_i^{-1}\pmod{M}\) 。 扩展中国剩余定理(EXCRT) 扩展中国剩余定理不要求 \(m_i\) 互质,其结论是由数学归纳法得出的,跟CRT实际上没太大关系。这种情况下,方程组的解是不唯一的。 首先考虑两个方程的情况。 假设我们有 \(x\equiv a_1\pmod{m_1},x\equiv a_2\pmod{m_2}\) ,那么显然 \(x+m_1*t_1=a_1,x+m_2*t_2=a_2\) ,其中

中国剩余定理模数互质的情况模板(poj1006

为君一笑 提交于 2019-11-26 13:03:57
http://poj.org/problem?id=1006 #include <iostream> #include <cstdio> #include <queue> #include <algorithm> #include <cmath> #include <cstring> #define inf 2147483647 #define N 1000010 #define p(a) putchar(a) #define For(i,a,b) for(long long i=a;i<=b;++i) //by war //2019.8.8 using namespace std; long long p,e,i,d,ans,m,x,y,cnt; long long a[10],b[10]; void in(long long &x){ long long y=1;char c=getchar();x=0; while(c<'0'||c>'9'){if(c=='-')y=-1;c=getchar();} while(c<='9'&&c>='0'){ x=(x<<1)+(x<<3)+c-'0';c=getchar();} x*=y; } void o(long long x){ if(x<0){p('-');x=-x;} if(x>9)o(x/10); p(x%10+'0'); }