中国剩余定理小结 (互质,非互质) (poj 1006,hdu 3579)

来源:互联网 发布:redvelvet mv知乎 编辑:程序博客网 时间:2024/06/09 20:50

中国剩余定理小结 (互质,非互质) (poj 1006,hdu 3579)

先证明下中国剩余定理

条件:
x%m_1=a_1
x%m_2=a_2
...
x%m_n=a_n
m_1,m_2,...,m_n两两互质

证明:
设M=m_1*m_2*m_3*...*m_n
M_i=M/m_i
因为gcd(M_i,m_i)=1,所以M_ix+m_iy=1
(t_i*M_i)%m_i=1 //由Ext_gcd(M_i,m_i,x,y)求出,t_i=x
方程组的解:x=a_1*t_1*M_1+...+a_n*t_n*M_n


题目:poj 1006

http://poj.org/problem?id=1006

题意:
现在有三条式子:
x%23=a1
x%28=a2
x%33=a3
现在求最小的整数(x-d)
限制:
0 <= d <= 365



在说下非互质情况下的中国剩余定理

证明如下:

由于不两两互质,所以只能两个两个解。
设通解为N
->N=m1*k1+r1,N=m2*k2+r2
->m1*k1+r1=m2*k2+r2
->k1*m1+(-k2*m2)=r2-r1
->设a=m1,b=m2,x=k1,y=(-k2),c=r2-r1
->ax+by=c 通过 d=Ext_gcd(a,b,x,y) 得 d,x
->最小整数解x=(x*(c/d)%(b/d)+(b/d))%(b/d)
->N=a*(x+n*(b/d))+r1
->N=(a*b/d)*n+(a*x+r1)
->令m3=a*b/d,r3=a*x+r1,k3=n
->N=m3*k3+r3 化成了一个新的式子,不断迭代然后出结果。


题目:hdu 3579

http://acm.hdu.edu.cn/showproblem.php?pid=3579

题意:
给出m_1,m_2,...m_n;a_1,a_2,...,a_n,非互质中国剩余定理。


0 0
原创粉丝点击