公式挂掉太丑了就看这里
数论2:同余,欧拉函数,逆元
同余
$$
a\equiv b (\mathrm{mod,,} m) \leftrightarrow m|b-a\
a\equiv b(\mathrm{mod,,} m), a\equiv b (\mathrm{mod,,}n)\rightarrow a\equiv b(\mathrm{mod,,}[m,n])\
\bbox[yellow]{
(k,m)=d, ka\equiv ka’(\mathrm{mod,,} m)\rightarrow a\equiv a’(\mathrm{mod,,} \frac md)}
$$
公式三证明:
$$
\because (k,m)=d,\therefore(\frac kd, \frac md)=1\
又\because m | k(a-a’)
\therefore \frac md|\frac kd(a-a’)\
又\because \frac md与\frac kd互质, \therefore \frac md | a-a’,得证
$$
公式三更一般的结论:
$$
ka\equiv ka’(\mathrm{mod,,} m)\rightarrow a\equiv a’(\mathrm{mod,,} \frac m{(m,k)})
$$
线性同余方程
$$
ax\equiv b(\mathrm{mod,,} m)\leftrightarrow ax+my=b
$$
对 $mx\equiv 0(\mathrm{mod,,}m),ax\equiv b(\mathrm{mod,,}m)$ 辗转相除
还有一种计算方法比较好理解(来自dls)
$$
\begin{cases}
100x\equiv 0(\mathrm{mod,,}100),(1)\
87x\equiv3(\mathrm{mod,,}100),(2)
\end{cases}
$$
$$
(1)-(2)得,13x\equiv97(\mathrm{mod,,}100),(3)\
(2)-6\times(-3)得,9x\equiv 21(\mathrm{mod,,}100),(4)\
(3)-(4)得,4x\equiv 76(\mathrm{mod,,}100)\
(4)-2\times(5)得,x\equiv69(\mathrm{mod,,}100)
$$
解线性同余方程板子:
1 | // 求 a * x = b (mod m) 的解 |
简化剩余系
所有的 n 满足 $0<n\leq m,(n, m)=1$ 构成了一个模 m 的简化剩余系。$\phi(m)$ 表示 n 的个数。
欧拉函数
$$
\phi(m)=m\prod_{p|m}(1-\frac1p)
$$
欧拉函数证明
$$
积性函数性质 \phi(mn)=\phi(m)\phi(n)和唯一分解定理 n=p_1^{a_1}p_2^{a_2}…p_k^{a_k}\
因此\phi(n)=\phi(p_1^{a_1})…\phi(p_k^{a_k}),\对于任意一项都有
\bbox[yellow]{\phi(p_s^{a_s})=p_s^{a_s}-p_s^{(a_s-1)},(1)}\
试证(1):从1到p_s^{a_s}共有p_s^{a_s}个数字,不互质的数有\bbox[yellow]{p_s,2p_s,…,p_s^{a_s-1}}共{p_s^{a_s-1}}项\
则互质的数有\bbox[yellow]{p_s^{a_s}-p_s^{a_s-1}}个,即\phi(p_s^{a_s})=p_s^{a_s}-p_s^{a_s-1}=p_s^{a_s}(1-\frac1{p_s})\
可以把该式子推广到质数分解的每一项因子,则有:\
\phi(n)=\phi(p_1^{a_1})…\phi(p_k^{a_k})
=p_1^{a_1}…p_k^{a_k}*(1-\frac1{p_1})…(1-\frac1{p_k})=n\prod_{i=1}^{k}(1-\frac1{p_i})
$$
欧拉函数板子
1 | ll phi (ll n) { |
欧拉定理
==若 $(a,m)=1$,则 $a^{\phi(m)}\equiv1(\mathrm{mod,,}m)$==
m为素数时有 费马小定理:$a^{p-1}\equiv1(\mathrm{mod,,}p)$
欧拉定理证明
设 $1-n$ 中与 $n$ 互质的数为:$k_1, k_2, …, k_{\phi(n)}$,则有 $ak_1,ak_2,…ak_{\phi(n)}$,二者在模n意义下等价(可以手搓几个例子模拟),
二式分别累乘,有 $k_1k_2…k_{\phi(n)}\equiv a^{\phi(n)}k_1k_2…k_{\phi(n)} (\mathrm{mod,,}n)$,即
$$
\prod_{i=1}^{\phi(n)}k_i\equiv a^{\phi(n)}\prod_{i=1}^{\phi(n)}k_i(\mathrm{mod,,}n)
$$
根据同余公式三 $ka\equiv ka’(\mathrm{mod,,} m)\rightarrow a\equiv a’(\mathrm{mod,,} \frac m{(m,k)})$
则有
$$
\prod_{i=1}^{\phi(n)}k_i\equiv a^{\phi(n)}\prod_{i=1}^{\phi(n)}k_i(\mathrm{mod,,}n)\rightarrow
1\equiv a^{\phi(n)}(\mathrm{mod,,}n)
$$
扩展欧拉定理
$$
a^b\equiv\begin{cases}
a^{b\mathrm{,mod,}\phi(m)},& \mathrm{gcd}(a,m)=1,\
a^b,& \mathrm{gcd}(a,m)\neq 1,b<\phi(m),,,,,,,\ (\mathrm{mod,,}m)\
a^{(b\mathrm{,mod,\phi(m)}) + \phi(m)},& \mathrm{gcd}(a,m)\neq1,b\geq \phi(m).
\end{cases}
$$
$$
a^b\mathrm{mod,}m=a^{b\mathrm{,mod,}\phi(m)+\phi(m)}\mathrm{,mod,}m,,,(b\geq \phi(m))
$$
因为多次取模之后会进入一个循环
逆元
$ax\equiv1(\mathrm{mod,,}m)$,称 $x$ 为 $a$ 的逆元,记作 $a^{-1}$
快速幂求逆元模板
素数:
$a^{p-1}\equiv1(\mathrm{mod},,p)\rightarrow aa^{p-2}\equiv1(\mathrm{mod,,p)\rightarrow a^{p-2}\equiv a^{-1}(\mathrm{mod},,p})$
1 | ll qmi(ll a, ll k, ll p) { |
扩展欧几里得求逆元模板
非素数:
$a^{\phi(m)}\equiv1(\mathrm{mod,,}m)\rightarrow a^{\phi(m)-1}\equiv a^{-1}(\mathrm{mod,,}m)$
1 | int d = exgcd(a, p, x, y); |
线性递推求逆元(1 - n)
inv[i] = (p - p / i) * inv[p % i] % p
证明(相当于等式变形):
$$
p= (p,,\mathrm{mod,,}i)+\lfloor\frac pi\rfloor\times i\两边同除p,得,
0\equiv ((p,,\mathrm{mod,,}i)+\lfloor\frac pi\rfloor\times i),,(\mathrm{mod,,}p)\移项+同除,得,
-\lfloor\frac pi\rfloor \equiv ((p,,\mathrm{mod,,}i)\times i^{-1}),,(\mathrm{mod,,}p)\
i^{-1}\equiv -\lfloor\frac pi\rfloor \times (p\mathrm{,,mod,,}i)^{-1},,(\mathrm{mod,,}p)\
右边就是负数取模,加上个p就得证 i^{-1}\equiv p-\lfloor\frac pi\rfloor \times (p\mathrm{,,mod,,}i)^{-1},,(\mathrm{mod,,}p)
$$
板子:
1 | inv[1] = 1; |
前缀乘积qiu’ni’yuan
$$
令s_i=\prod_{j=1}^ia_j,,,t_i=\prod_{j=1}^i a_j^{-1},则有a_i^{-1}=s_{i-1},t_i
$$
然后利用 $s_1\rightarrow s_2\rightarrow…\rightarrow s_n \rightarrow t_n\rightarrow…\rightarrow t_2\rightarrow t_1$ 求出每一项 $s_i,t_i$,从而求得 $a_i$
其中, $s_n \rightarrow t_n$ 这一步可以通过 $exgcd$ 求逆元得出
==利用前缀乘积,正反正 for 三遍即得==
板子:
1 | void solve () { |
Reference
求逆元的三种方法:https://zhuanlan.zhihu.com/p/100587745
习题
欧拉函数模板题 http://oj.daimayuan.top/course/12/problem/489