前言
作者知道网上有很多关于中国剩余定理的详细讲解,也知道本文相比于它们会逊色许多,但作者会尽力将其讲清楚。谢谢支持!
(本篇文章默认你已经知道什么是模意义,且知道逆元以及简单的模运算)
—————————————-
问题
对于一个数x,已知 x≡s1(mod m1) , x≡s2(mod m2) , …… x≡sn(mod mn) ,并且保证 ∀i,j 有 gcd(mi,mj)=1 ,求x的最小值。
—————————————-
求解
上述问题所给的等价式有个更书面的名字,叫同余方程组。现在我们考虑如何求得最小值。
我们令M= ∏ni=1mi ,稍加思考可以得知 x+M≡si(mod mi) 。故我们可以计算出在模M意义下的x值,也同样可知x在模M意义下的值即是最小答案。(模数比M小不能保证正确)
那么,如何求得x值呢?我们可以考虑构造答案。
—————————————-
构造
我们可以考虑构造 x=A1+A2+A3+……+An ,其中 Ai 是跟 mi 有关的量。
我们思考一下模运算的性质:
观察上面的式子,我们发现假如同时满足以下2条约束,那么答案x即是合法的:
1.对于
j≠i, Ajmod mi=0
;
2.
Aimod mi=si
。
不难发现只要 Ai 是除 mi 之外其他 mj (1≤j≤n且j != i) 的公倍数即可满足约束1,结合 gcd(mi,mj)=1 可知 Ai 一定有因子 Mmi 。(M的意义见上一节)
那么如何满足约束2呢?
我们不难发现 Ai 一定含有因子 si , 但是因子 Mmi 的影响如何消除?其实只要乘上 Mmi 在模 mi 意义下的逆元就行了。
—————————————-
整理
综合上述分析,我们令M= ∏ni=1mi , Ni=Mmi , N−1i 为 Ni 关于模 mi 意义下的逆元,
那么 Ai=Ni×N−1i×si , 答案x即为 ∑ni=1Ai(mod M) 。
—————————————-
总结
1.构造是一种十分常见且有效的求解答案的方法,若发现题目本身约束太多且各个约束存在独立的结果,可以分析题目性质考虑构造答案。
2.中国剩余定理所能解决的范围仅限于模数互质,求解非互质的模数的同余方程组中国剩余定理并不适用。