提高组数论速查
同余与剩余系
设有整数 \(n_1,n_2,m\) 满足 \(\exist q_1,q_2,r \in \Z,n_1=mq_1+r,n_2=mq_2+r\),则称 \(n_1,n_2\) 模 \(m\) 同余,记作 \(n_1 \equiv n_2 \pmod m\)。
称所有模 \(m\) 同余(设为 \(r\))的 \(n\) 组成的集合为模 \(m\) 的一个剩余类,记作 \(C_r\)。
设有 \(m\) 个整数构成的集合 \(A\) 满足 \(a_1,\dots,a_m\) 模 \(m\) 互不同余(即从每个剩余类中各取一个数),则称 \(A\) 为模 \(m\) 的一个完全剩余系。
容易证明一个满足上面条件的集合至多有 \(m\) 个数。
我们可以再化简一下,只取与 \(m\) 互质的数,这样就得到了模 \(m\) 的一个简化剩余系。简化剩余系的大小为 \(\varphi(m)\)。
欧几里得算法与裴蜀定理
欧几里得算法(辗转相除法):\(\gcd(a,b)=\gcd(b,a\bmod b)(a,b\in\Z)\)。
证:设 \(a=qb+r,\gcd(b,r)=d\)。
由于 \(\gcd(b,a\bmod b)=\gcd(b,r)\),则有 \(d|r,d|b\),则可以推出 \(d|a\),则有 \(d|\gcd(a,b)\)。
设 \(k=\gcd(a,b)\),则 \(k|a-qb=r\),说明 \(k|\gcd(b,r)\)
因此,\(\gcd(a,b)|\gcd(b,a\bmod b),\gcd(b,a\bmod b)|\gcd(a,b) \Rightarrow \gcd(a,b)=\gcd(b,a\bmod b)\)。
裴蜀定理:若有 \(a,b,m\in\Z\)(\(a,b\) 不全为 0),则存在一组解 \(x,y\in\Z\) 使得 \(ax+by=m\) 的充要条件是 \(\gcd(a,b)|m\),且若有解则必有无穷多组解。
证(拓展欧几里得算法):
必要性显然,下证充分性:
不妨假设 \(a,b \ge 0\),因为正负号的不同可以简单地通过 \(x,y\) 的正负性来改变。
同时,只要证明 \(ax+by=\gcd(a,b)\) 即可,因为对 \(x,y\) 扩大若干倍即可得到 \(m\)。
那么两边同时除以 \(\gcd(a,b)\),即 \(a'x+b'y=1\)。
我们在求 \(\gcd(a',b')\) 的时候是怎么做的?后几步单独拿出来看(不妨设此时的两个求公约数的数分别为 \(u,v\)):
发现出现了一个 \(u=qv+1\),移项得到 \(u-qv=1\)。那么现在就得到了一组对于 \(u,v\) 的解。
能不能从 \(u,v\) 推到 \(a',b'\) 呢?答案是可以的。
假设我们上一级求的是 \(\gcd(\lambda u+v,u)=\gcd(u,v)\),已知 \(ux_0+vy_0=1\),要求 \((\lambda u+v)x_1+uy_1\) 的解。
构造:取 \(x_1=y_0,y_1=x_0-\lambda y_0\),得到
逐层推上去即可,这样不仅证明了该定理,还求出了一组解。
有了特解后,其通解为小学奥数内容,这里不再赘述。
int exgcd(int a, int b, int &x, int &y, int z = 1) {
    if (!b) {
        if (z % a) x = 0, y = 0;
        else x = z / a, y = 0;
        return a;
    }
    int d = exgcd(b, a % b, x, y, z);
    int xx = y, yy = x - y * (a / b);
    x = xx, y = yy;
    return d;
}
利用数学归纳法也容易将裴蜀定理推广到 \(n\) 个数的情况:
\(\sum a_ix_i=m\) 有整数解当且仅当 \(\gcd(a_1,a_2,\dots,a_n) | m\)。
证:
- 
当 \(n=2\) 时显然成立。 
- 
假设 \(2 \le n \le k\) 时成立,下证 \(n = k + 1\) 时成立。 因为 \(\le k\) 时成立,因此 \(\sum_{i=1}^k a_ix_i=\lambda\gcd(a_1,\dots,a_k)\)。 原式变为 \(\lambda\gcd(a_1,\dots,a_k)+a_{k+1}x_{k+1}=m\) 有解,由 \(n=2\) 时知有解当且仅当 \(\gcd(\gcd(a_1,\dots,a_k),a_{k+1})=\gcd(a_1,\dots,a_{k+1})|m\)。 
证毕。
欧拉定理与费马小定理
欧拉定理(数论):若 \(\gcd(a,m)=1\),则 \(a^{\varphi(m)} \equiv 1 \pmod m\)。
证:
设模 \(m\) 的一个简化剩余系为 \(r_1,\dots,r_{\varphi(m)}\),则由简化剩余系的性质 \(ar_1,\dots,ar_{\varphi(m)}\) 同样为模 \(m\) 的简化剩余系。
那么就有
当 \(m\) 为一个质数 \(p\) 时,就得到了费马小定理。
费马小定理: \(a^p \equiv a \pmod p\),\(p\) 是质数。
具体到 OI 上,可以总结出一个 拓展欧拉定理 ,用来处理模意义下的指数:
仅证第三条:
我们对 \(m\) 分解质因数,设为 \(p_1^{\alpha_1}\dots p_k^{\alpha_k}\)。考虑对每一个 \(p^\alpha\) 分别证明:若每一个都成立,那么这几个互质的模数乘起来必然成立。
- 
当 \(\gcd(a,p^\alpha)=1\) 时: \[a^b\equiv a^{\varphi(m)\cdot\lfloor\frac{b}{\varphi(m)}\rfloor+b\bmod\varphi(m)} \equiv [a^{\varphi(m)}]^{\lfloor\frac{b}{\varphi(m)}\rfloor}\cdot a^{b\bmod\varphi(m)} \pmod{p^\alpha} \]注意到 \(\varphi\) 是积性函数,因此 \(\varphi(p^\alpha) | \varphi(m)\)。 
 所以\[a^b \equiv a^{b \bmod \varphi(m)} \equiv a^{b \bmod \varphi(m)+\varphi(m)} \pmod{p^\alpha} \]
- 
当 \(\gcd(a,p^\alpha) \neq 1\) 时: 因为 \(p\) 是质数,所以 \(p|a\)。又由前提有 \(b \ge \varphi(m)\),因此 \(b \ge \varphi(m) \ge \varphi(p^\alpha)=p^\alpha-p^{\alpha-1}=p^{\alpha-1}(p-1) \ge \alpha\)。 那么有 \[a^b \equiv a^{b \bmod \varphi(m)+\varphi(m)} \equiv0 \pmod {p^\alpha} \]
最终合并即可。
或者参考 OI Wiki 上的证法:欧拉定理 & 费马小定理 - OI Wiki。
乘法逆元
是否可以将模拓展到有理数域上呢?答案是可以的。
考虑下面一个问题:
设有正整数 \(a,m\),求满足 \(a \cdot b \equiv 1 \pmod m\) 的解 \(b\)。
我们称 \(b\) 为 \(a\) 模 \(m\) 意义下的乘法逆元,记作 \(a^{-1} \pmod m\)(或者说环 \(\Z_m\) 上的乘法逆元)。
其实就是相当于求解 \(ax-my=1\) 的 \(x\)。
由裴蜀定理,当 \(\gcd(a,m) > 1\) 时无解,即不存在逆元。
否则就可以用拓展欧几里得求出 \(x\)。
从另一个角度想,如果存在逆元,由欧拉定理,有
快速幂即可求出。
如果要求 \(n\) 个数的逆元呢?
求前 \(n\) 个数的那个做法多少有点麻烦,个人更喜欢这种:
考虑求任意 \(n\) 个数的逆元,先随便给个顺序,然后求个前缀积 \(s_1,\dots,s_n\)。
之后利用上述方法求 \(s_n\) 的逆元。
紧接着倒序一个一个乘回去,\(s_n^{-1}\cdot a_n=s_{n-1}^{-1}\),这样线性求出了每个前缀积的逆元。
之后再顺序乘过去,\(s_n^{-1}\cdot s_{n-1}=a_{n}^{-1}\)。
时间复杂度 \(O(n)\),相比直接线性扫的多了点常数,但是好想。
这里也直接给出传统做法:
inv[1] = 1;
for (int i = 2; i <= n; i++) {
    inv[i] = (p - p / i) * inv[p % i] % p;
}
中国剩余定理
求解同余方程 \(x \equiv a_i \pmod {m_i}\),其中 \(m_i,m_j\) 两两互质。
令 \(M=\prod m,M_i=\frac{M}{m_i}\),再求出 \(M_i\) 在模 \(m_i\) 意义下的乘法逆元 \(M_i^{-1}\) 则该同余方程模 \(M\) 下的唯一解为
证:
先证存在性:
首先由于 \(m\) 两两互质,因此 \(M_i=\frac{M}{m_i}\) 与 \(m_i\) 互质,因此必定存在逆元 \(M_i^{-1}\)。
而在 \(\bmod m_i\) 意义下 \(M_iM_i^{-1} \equiv 1 \pmod{m_i}\),因此 \(a_iM_iM_i^{-1} \equiv a_i \pmod{m_i}\)。
又因为 \(m_j | M_i,i \neq j\),所以 \(a_iM_iM_i^{-1} \equiv 0 \pmod{m_j}\)。
唯一性利用数学归纳法不难证明。
如果模数不两两互质呢?这个时候就要使用拓展中国剩余定理:
考虑取出其中一对不互质的方程,假设为
其中 \(\gcd(m,n) > 1\)。考虑写成等式的形式:
即求一个不定方程的解,使用裴蜀定理即可判定是否有解,并求出一组特解。
然后将两个方程合并:
其中 \(k \in \Z\),\(\lambda_0\) 是通过 exgcd 求出的通解。
两两合并方程组即可。
威尔逊定理
对于任意质数 \(p\),有 \((p-1)! \equiv -1 \pmod p\)。
证:
不难发现 \(1,\dots,p-1\) 里每一个数都与 \(p\) 互质。
引理:若 \(a,p\) 互质,则 \(a\) 在模 \(p\) 意义下的逆元 \(a^{-1}\) 存在且唯一。
存在性显然,下证唯一:
假设有两个整数 \(b_1,b_2\) 满足
那么
回到原问题,由于每个数的逆元在 \(\{1,\dots,p-1\}\) 中唯一确定,因此互为逆元的两个数可以直接消掉,仅需考虑逆元是自己本身的数。
解方程 \(x^2 \equiv 1 \pmod p \ (1 \le x \le p - 1)\),解得 \(x_1=1,x_2=p-1\)。
因此 \((p-1)! \equiv 1 \times (p-1) \equiv p - 1 \equiv -1 \pmod p\)。
卢卡斯定理
\[\binom{n}{m} \equiv \binom{n \bmod p}{m \bmod p} \times \binom{\lfloor\frac{n}{p}\rfloor}{\lfloor\frac{m}{p}\rfloor} \pmod p \]
人话翻译:原组合数等于将 \(n,m\) 表示成 \(p\) 进制后每一位分别求组合数并相乘。
关于证明:感觉可以仿照拓展卢卡斯用 CRT 证,但是我不会。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号