中国剩余定理讲解

来源:互联网 发布:法修史丹比特 知乎 编辑:程序博客网 时间:2024/06/15 16:15

前言

作者知道网上有很多关于中国剩余定理的详细讲解,也知道本文相比于它们会逊色许多,但作者会尽力将其讲清楚。谢谢支持!

(本篇文章默认你已经知道什么是模意义,且知道逆元以及简单的模运算)

—————————————-

问题

对于一个数x,已知xs1(mod m1), xs2(mod m2), …… xsn(mod mn),并且保证i,jgcd(mi,mj)=1,求x的最小值。

—————————————-

求解

上述问题所给的等价式有个更书面的名字,叫同余方程组。现在我们考虑如何求得最小值。

我们令M=ni=1mi,稍加思考可以得知x+Msi(mod mi)。故我们可以计算出在模M意义下的x值,也同样可知x在模M意义下的值即是最小答案。(模数比M小不能保证正确)

那么,如何求得x值呢?我们可以考虑构造答案。

—————————————-

构造

我们可以考虑构造x=A1+A2+A3++An,其中Ai是跟mi有关的量。

我们思考一下模运算的性质:

A1+A2+A3y(mod m)
(A1mod m)+(A2mod m)+(A3mod m)y(mod m)

观察上面的式子,我们发现假如同时满足以下2条约束,那么答案x即是合法的:
1.对于ji, Ajmod mi=0
2.Aimod mi=si

不难发现只要Ai是除mi之外其他mj (1jnj != i)的公倍数即可满足约束1,结合gcd(mi,mj)=1可知Ai 一定有因子 Mmi。(M的意义见上一节)

那么如何满足约束2呢?

我们不难发现Ai一定含有因子si, 但是因子Mmi的影响如何消除?其实只要乘上Mmi在模mi意义下的逆元就行了。

—————————————-

整理

综合上述分析,我们令M=ni=1miNi=MmiN1iNi关于模mi意义下的逆元,

那么Ai=Ni×N1i×si, 答案x即为ni=1Ai(mod M)

—————————————-

总结

1.构造是一种十分常见且有效的求解答案的方法,若发现题目本身约束太多且各个约束存在独立的结果,可以分析题目性质考虑构造答案。
2.中国剩余定理所能解决的范围仅限于模数互质,求解非互质的模数的同余方程组中国剩余定理并不适用。


wrote by miraclejzd

原创粉丝点击