例题:P1495
求解问题:
中国剩余定理求解的问题如下:
1
| 今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?
|
有一堆物品,它的数量被 3 除后余 2,被 5 除后余 3,被 7 除后余 2,求有多少个?
前置知识:
求解过程:
我们可以将这个问题用数学的方式表达:
⎩⎨⎧x≡a1(modm1)x≡a2(modm2)x≡a3(modm3)⋮
其中,方程数量为 k。
先将这道题简单化。
我们能否将 x 拆分成三份,然后再将三份加起来求解呢?
如果这三份分别称为 n1,n2,n3,让其满足
⎩⎨⎧n1≡a1(modm1)n2≡a2(modm2)n3≡a3(modm3),x=n1+n2+n3
在此补上一点定义:
-
M=∏m,所有 m 的乘积
-
Mi=mi∏m,即除去 mi,所有 m 的乘积
-
Ni=Mi1modmi,即 Mi 在 mi 意义下的逆元
考虑让:
ni=ai×Mi×Ni
此时,因为 Ni 是 Mi 在 mi 意义下的逆元,所以 Ni×Mi≡1(modmi),此时满足 ni≡ai(modmi)
然后对于 j=i,因为 ni 中含有 Mi,而 Mi 中一定含有 mj,所以 ni≡0(modmj)
因此一加就可以发现,x=n1+n2+n3 是符合的。
这样就知道特解了。
那一般我们求的都是最小解,或者说,如果想求所有解的话,只需要加上或减去 M 就可以了
还是那个道理,如果说你要保证 n1≡a1(modm1),那么加/减的东西就要是 m1 的倍数
如果又要 n2≡a2(modm2),还要 n3≡a3(modm3),那么加/减的东西就要是 m1、m2、m3 的倍数,lcm 就好了。
当然你已经保证 m1、m2、m3 互质的话就不用 lcm 了。
推广同理
还有,求逆元的方法,可以用扩欧,也可以用快速幂
扩欧就是 Mi×Ni+k⋅mi=1,因为 Mi 不含 mi (除非是你没有互质),所以 gcd(Mi,mi)=1,要 Ni 即可
搞掂,收工