模!

同余方程组

如何解一个同余方程组:$$a_i x equiv b_i (mod m_i)$$

首先我们可以知道,解一定是这样的一个形式:$$x equiv b(mod m)$$

初始,我们可以令(b=0, m=1)表示所有整数。

现在的问题转化为求解这样两个方程:

[x equiv c (mod m) ]

[a x equiv b(mod m_i) ]

(x=pm + c),则有(a p m + q m_i=b + ca),如果((a m, m_i) mid b + ca)无解,否则用扩展欧几里德解出(p,q),进而得到$$x equiv pm + c (mod frac {m_im} {(m_i, am)})$$

中国剩余定理

一些计数类题目的取模有可能不是质数,然后有一些神奇的性质用不了。

这时我们可以把模数(m)拆开为$$prod {p_i}^k$$,其中(P_i)是质数。根据中国剩余定理的神奇性质,我们可以对每个 ({P_i}^k)当作取模数计算一次答案,然后合并出最后的答案。

也就是,我们要解同余方程组:$$xequiv b_i(mod m_i)$$,这里所有(m_i)两两互素。

(M = prod m_i,M_i = {M over m_i}),那么((m_i,M_i)=1),所以,我们可以解$$M_ip_i+m_iq_i=1$$,这时候,有个关键的事实:$$M_ip_i=1(mod m_j) iff j=i$$,这样的话,答案就是:$$sum b_iM_ip_i$$

模意义下的幂

一个神奇定理,证明传送门

[a^b equiv a ^{b mod phi(m) + phi(m)} (mod m),b>phi(m) ]

做过的一些题目

POJ 1150 The Last Non-zero Digit

(2,5)的因子抽出来,然后使用分治的手段统计数字模(10)后等于(3,7,9)的各个数量。

POJ 1284 Primitive Roots

求原根数量,好像有这样一个公式?$$phi(phi(m))$$
现在水平有限,不会证 。

POJ 2115 C Looooops

裸的扩展欧几里德。

POJ Recurrent Function

裸的同余方程组。

POJ 2720 Last Digits

用了上面的神奇定理(模下的幂)就简单了。

原文地址:https://www.cnblogs.com/wangck/p/4587614.html