从头开始学数论(2)
从头开始学数论(2)
前置芝士
欧拉函数
欧拉函数相关
积性函数
对于互质的 \(a, b\) 和一个函数, 如果有 \(f(a\times b) =f(a)\times f(b)\) 就称这个函数是一个积性函数。
完全积性函数
对于任意的 \(a, b\) 和一个函数, 如果有 \(f(a\times b) =f(a)\times f(b)\) 就称这个函数是一个完全积性函数。
常见函数
- \(?(x) = \begin{cases} 1 & x=1 \\ 0 & x \not= 1 \end{cases}\) ,它是完全积性函数。
- \(Id_k(x)=x^k\) ,它是完全积性函数( \(k\) 省略时默认为 \(1\) )。
- \(σ_k(x) = \underset{d|n}{\sum}d^k\) ,它是积性函数( \(k\) 省略时默认为 \(1\) )。
- \(μ(x) = \begin{cases} 1 & x=1 \\ (-1)^k & x=\underset{i=1}{\overset{k}{\prod}} p_i \ (p_i为互异质数) \\ 0 & otherwise \end{cases}\)
从Dirichlet卷积到莫比乌斯函数
Dirichlet卷积
定义
定义 2 个数论函数 \(f,p\),如果有 \(h(x) = \sum_{d|x}f(d)p(\frac{x}{d})\),就称函数 \(h\) 是函数 \(f\) 和函数 \(p\) 的卷积,记为 \(h = f * p\)。可以读作 \(f\) 卷 \(p\)。
这里的 "\(*\)" 是卷积的符号。
卷积也可以这样表示 \(h(n)=(f*g)(n)=\sum_{xy=n}f(x)p(y)\)
性质
- 交换律: \(f*p=p*f\)
证明:
\(f*p=\sum_{d|n}f(d)p(\frac{n}{d}) = \sum_{d|n}f(\frac{n}{d})p(d)=p*f\)
- 结合律: \((f*p)*h=f*(p*h)\)
证明:
\(((f*p)*h)(a)=\sum_{x\times y\times z=a}(f(x)\times p(y))\times h(z)\\ = \sum_{x\times y\times z=a}f(x)\times (p(y)\times h(z))\\ =((f*p)*h)(a)\)
- 分配律: \(f*(x+p)=f*x+f*p\)
证明
显然
- \(?*f=f*?=f\)
证明:
显然
- 如果 \(f\) 和 \(g\) 都是积性函数那么 \(f*g\)都是积性函数。
证明:
设 \(h = f * g\), \(f, g\) 都是积性函数。
设 \(a, b\) 互质。
于是有 \(h(a)=\sum_{d_1|a}f(d_1)g(\frac{a}{d_1})\), \(h(b)=\sum_{d_2|b}f(d_2)g(\frac{b}{d_2})\)
乘起来可以得到
\(h(a)\times h(b)=\sum_{d_1|a}f(d_1)g(\frac{a}{d_1})\times \sum_{d_2|b}f(d_2)g(\frac{b}{d_2})\\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\sum_{d_1|a,d_2|b}f(d_1\times d_2)g(\frac{ab}{d_1\times d_2})\)
因为 \(a,b\) 互质, 所以\(d_1\times d_2\) 是唯一的,所以原式可以化为 \(\sum_{d_1|a,d_2|b}f(d)g(\frac{ab}{d})\) 就是 \(h(ab)\) 即 \((f*g)(a)\times (f*g)(b) = (f*g)(ab)\)
逆元
定义
如果数论函数\(f\)有, \(f(1)\neq 0\), 若 \(f*g=?\), 就称
\(g\) 是 \(f\) 的 \(dirichlet\) 逆元,记作 \(f^{-1}\) 。
组合数学的美
LUCAS定理
没有什么好说的。
\[C^n_m=C^{n\ mod \ p}_{m\ mod \ p}\times C^{n/p}_{m/p} \]代码用递归实现
inline i64 lucas(i64 n, i64 m) {
return m == 0 ? 1 :
(c(n % p, m % p) * lucas(n / p, m / p) % p);
}
二项式定理
\[(a + b) ^ 1 = 1a + 1b\\ (a + b) ^ 2 = 1a^2 + 2ab + 1b^2\\ (a + b) ^ 3 = 1a^3 + 3a^2b + 3ab^2+1b^3 \]提出系数得到
\[1, 1\\ 1, 2, 1\\ 1, 3, 3, 1 \]显而易见,杨辉三角。
由此得到二项式定理:\((a+b)^n=\sum_{i=1}^n C_n^i\times a^i \times b^{n-i}\)。
通过组合数学的角度思考。
在展开 \((x+y)\times(x+y)\times(x+y)\dots(x+y)\) 的过程中,要么选 \(x\) 要么选 \(y\), 所以 \(x^i\times y^{n-i}\)的系数为 \(C_n^i\)。
递推求错放数量
设 \(f_i\) 是满足 \(a_i\) 不在第 \(i\) 位的排列方案。
a. 假设第 \(n\) 个数不在第 \(n\) 位, 假设放在第 \(k\) 位,一共有 \(n\) 位, 所以有 \(n - 1\) 种方案。
b. 考虑第 \(k\) 位的数,它有两种情况:
- 把这个数放到第 \(n\) 位去,于是这两个数就安排好了, 现在还有 \(n - 2\) 个数需要错排,方案数就是 \(f_{n-2}\)
- 把这个数不放到第 \(n\) 位去,于是只有第 \(n\) 位安排好了,还有 \(n - 1\) 个数需要错排,方案数就是 \(f_{n-1}\)
对于 \(a,b\) 操作是先有 \(a\) 再有 \(b\),满足乘法原理
对于 \(b\) 的两个操作则是两种情况,只能选一种, 满足加法原理,所以错排的递推式如下:
\[f_i=(i-1)\times (f_{i-1} + f_{i-2}) \]