数论学习笔记
线性代数
gcd
利用碾转相除法递归解决
int gcd(int a,int b){
return b?gcd(b,a%b):a;
}
lcm
int lcm(int a,int b){
return a/gcd(a,b)*b;
}
mod
模的定义 即整除
对于整数a,b,存在唯一的整数q,r使a=bq+r
性质
-
\[\left(a+b\right)\bmod m =\left(a \bmod m+ b \bmod m\right)\bmod m \]
-
\[(a-b)\bmod m=(a \bmod m -b \bmod m+m)\bmod m \]
注:前者不一定大于后者,需要加上m避免出现负数
-
\[(a*b)\bmod m=(a \bmod m*b \bmod m)\bmod m \]
同余
若 \(x \bmod m=y \bmod m\),称 \(x\),\(y\) 模 \(m\) 同余,记
$ x \equiv y \pmod m$。
若$ x \equiv y \pmod m$,则 \(\left|x-y\right| = km\),\(k\) 为整数,即 \(\left|x-y\right|\) 是 \(m\) 的倍数
逆元:
若 \(a*p \equiv 1 \pmod m\) 则称 \(p\) 为 \(a\) 在模 \(m\) 意义下的乘法逆元。**
费马小定理
若 \(p\) 是指数,且 \(a\) 不是 \(p\) 的倍数,则
即
所以 $a^{p-2} $ 就是 \(a\) 在模 \(p\) 意义下的逆元。
欧拉定理
设 \(a,n\) 是正整数,若 \(a\) 与 \(n\) 互质,则
当 \(n\) 是质数时,\(\varphi(n)=n-1\),就是费马小定理。
扩展欧拉定理
设 \(a,n\) 是正整数,有
推论:
对于任意的 \(a,k,n\),有:
- 如果 \(k < \varphi(n)\)
- 如果 \(k\ge \varphi(n)\)
裴属定理:
对于整数 \(a\),\(b\)。设 \(d=gcd(a,b)\),则一定存在一组整数 \(\left(x,y\right)\) 使 \(ax+by=d\)。
不定方程\(ax+by=c\),当且仅当\(c \equiv 0 \pmod {\gcd(a,b)}\) 即 \(c\) 是\(\gcd(a,b)\) 倍数时有整数解。
算术基本定理
任何大于 \(1\) 的正整数 \(n\) 都可以分唯一分解为有限个质数的乘积:
其中 \(p_i\) 都是质数,\(k_i\) 都是正整数。
因数个数定理
\(n=p_1^{k_1}p_2^{k_2}p_3^{k_3}......p_m^{k_m}\)。 \(p_i\) 是 \(n\) 的因数。
则 \(n\) 的因数个数为
因为每个因数的范围是 \((k+1)\) 可以等于 \(0\)。
威尔逊定理
若 \(p\) 为质数,则 \(p\) 可以整除 \((p-1)!+1\)
积性函数
定义
定义在所有正整数上的函数为算数函数或数论函数。
如果算术函数 \(f\) 对任意两个互质的正整数 \(p\) 和 \(q\) 均有 \(f(pq)=f(p)f(q)\),称为积性函数。
如果对于任意两个正整数 \(p\) 和 \(q\) 均有 \(f(pq)=f(p)f(q)\),称为完全积性函数。
性质
积性函数的和函数也是积性函数,如果 \(f\) 是积性函数,那么 \(f\) 的和函数 \(F(n)=\sum_{d \mid n}f(d)\) 也是积性函数。
\(d \mid n\) 表示 \(d\) 整除 \(n\),即 \(n \mod d =0\)。
- 欧拉函数
$\varphi (n)= 1 \sim n $ 中与 \(n\) 互质的数的个数。
- 最大公因数
\(\gcd_k(n)=gcd(n,k)\)
- 莫比乌斯函数
欧拉函数
定义:
性质:
递推式:
\(p_i\) 为 \(n\) 的每一个除 \(1\) 和他自身的质因数。
证明:
因为 \(\varphi\) 为积性函数,即:
那么只要考虑 \(\varphi(p^k)\) 的取值就好了。
因为 \(p\)是质数, \(1\sim p^k\) 中 \(p\) 的倍数的个数就等于与 \(p\) 不互质的个数,即 \(\frac{p^k}{p} =p^{k-1}\),则与 \(p\) 互质的个数就是 \(p^k-p^{k-1}=p^{k}*(1-\frac{1}{p})\)。
那么就得出 \(\varphi(p^k)=p^k*(1-\frac{1}{p})\)
所以就得出:
线性欧拉筛
根据欧拉筛筛质数的方法,双层枚举。分两种情况讨论。
求 \(n*p\) 的值
- \(n \mod p==0\) 即 \(n\) 与 \(p\) 不互质, \(p\) 是 \(n\) 的一个质因子。
假设将 \(n\) 分解成
假设 \(p==p_1\),则 \(n*p\) 分解成
利用欧拉函数的计算公式
即 \(φ(n*p)=φ(n) * p\)
- \(n \mod p \ne 0\) 即 \(n\) 与 \(p\) 互质,根据积性函数定义 $φ(np)=φ(n)φ(p) $
莫比乌斯函数
定义:
性质:
-
\[\sum_{d \mid n}\mu(d)=[n=1] \]
-
\[\sum_{d\mid n}\frac{\mu(d)}{d}=\frac{\varphi(n)}{n} \]
定理,莫比乌斯的和函数在整数 \(n\) 处的值 \(F(n)\)
莫比乌斯函数同样可以线性筛出。
实用技巧:
-
\[\sum_{d\mid \gcd(i,j)}\mu(d) =\left[\gcd(i,j) =1\right ] \]
推一些式子:
这里
莫比乌斯反演
对于一个算术函数 \(f(n)\),它的和函数满足 \(F(n)=\sum_{d\mid n}f(d)\),则
另一种形式
若:
则:
狄利克雷卷积
三个常用函数:
- 元函数
- 常数函数
- 恒等函数
常见卷子关系:
-
\[\sum_{d\mid n}\varphi(d)=n \Leftrightarrow \varphi*1=id \]
-
\[\sum_{d\mid n}\mu(d)=[n=1] \Leftrightarrow \mu*1=\varepsilon \]
-
\[\sum_{d\mid n}\frac{n}{d}\mu(d)=\varphi(n)\Leftrightarrow \mu*id=\varphi \]
杜教筛
杜教筛 \(=\) 狄利克雷卷积 \(+\) 整除分块 \(+\) 线性筛
组合数学
排列数
从 \(n\) 个人中选取 \(m\) 个人,考虑相对顺序,方案数为 \(A_{n}^{m} = \frac{n!}{(n-m)!}\)。
组合数
从 \(n\) 个人中选取 \(m\) 个人,不考虑相对顺序,方案数为 \(C_{n}^{m} = \frac{n!}{m!(n-m)!}\)。
性质
求组合数取模
因为除法没有取模,可以用逆元取模
- 如果取模确定的话,可以用阶乘预处理求逆元。求逆元可以用费马小定理,\(a\) 在模 \(p\) 意义下得的逆元是 \(a_{}^{p-2}\),而 \(a_{}^{p-2}\) 可以用快速幂求出。
- 取模不确定。即不能预处理逆元,可以用 \(Lucas\) 定理,通常用于阶乘无法解决的问题。
\(Lucas\)定理
实现方式,递归。
容斥原理
$ \left | A_{1}\bigcup A_{2}\bigcup A_{3}...\bigcup A_{n} \right | = \sum_{i=1}^{n}\left | Ai \right | -\sum_{1 \le i<j \le n} \left | A_{i} \bigcap A_{j} \right | +
\sum_{1 \le i< j < k \le n } \left | A_{i} \bigcap A_{j} \bigcap A_{k} \right | - .... +(-1)^{n-1} \left |A_{1} \bigcap A_{2} \bigcap A_{3} \bigcap .... \bigcap A_{n} \right | $
二项式反演可以解决下列问题
Another Filling the Grid
P6076 [JSOI2015] 染色问题
二项式定理
推论
当 \(x=1\) 时,可以证明:
二项式反演
至少/ \(n\) 个的方案数量,和恰好 \(n\) 个的方案数量。
设 \(f_i\) 表示恰好 \(i\) 个数满足特定结构,\(g_i\) 表示至少 \(i\) 个数满足特定结构。
如果已知 \(f_i\),根据定义可以得出 \(g_k\) 的通项公式。
若已知 \(g_k\),求 \(f_k\),有以下反演公式。
形式二:
此时 \(g_i\) 表示至多。
错排问题
有一个 \(n\) 个元素的排列,现在使得每一个元素都不在自己原来的位置上,共有多少种排列方式。
上述就是一个典型的错排问题,考虑递推解决,用 \(D_n\) 来表示。
假设原来按照元素 \(1\) 在第 \(1\) 号位置上,元素 \(2\) 在第 \(2\) 号位置上,以此类推。
- 假设把元素 \(1\) 放在第 \(k\) 个位置上,共有 \(n-1\) 中可能。
2.考虑元素 \(k\) 的位置
-
假设在第 \(1\) 个位置上,那么此时第 \(1\) 个位置和第 \(k\) 个位置上的元素是确定的,对于剩下不确定的 \(n-2\) 个位置来说,保证他们是错排的就好,方案数为 \(D_{n-2}\)。
-
假设不在 \(1\) 个位置上,那么整个序列中只确定了第 \(k\) 个位置上的元素,对于剩下不确定的 \(n-1\) 个元素来说,保证他们是错排的,方案数为 \(D_{n-1}\)。
根据乘法原理,递推公式就是:
P4071 [SDOI2016] 排列计数 典型的错排题目。
P4921 MtOI2018 情侣?给我烧了!
组合数学好题
隔板法
例:有 \(n\) 个相同的小球,要塞进 \(m\) 个不同的盒子,盒子不能为空,有多少种方案。
假设有 \(10\) 个小球,塞进 \(3\) 个盒子。将小球排成一列,插入 \(3-1\) 个隔板。如下:
$\bullet\bullet \mid \bullet\bullet\bullet\mid \bullet\bullet\bullet\bullet\bullet $
总共分成了 \(3\) 部分,可以当作 \(3\) 个盒子,而小球间有 \(10-1\) 个间隔,在 \(10-1\) 个间隔选取 \(3-1\) 个位置当作隔板,方案为 \(C_{10-1}^{3-1}\),即此类为题的答案是 \(C_{n-1}^{m-1}\)。
如果允许空盒,可以理解为每个盒子初始就有一个小球,就然后盒子不能为空,即总共 \(n+m\) 个小球,放进 \(m\) 个盒子,不能为空,答案是 \(C_{n+m-1}^{m-1}\)。
隔板法问题
一道二项式反演加上隔板法的题
一道思路很绝妙的题目,将排列转化为小根堆,根据乘法原理即可计算。
卡特兰数
初始值$ C_{0}=C_{1}=1$
定义 \(c_{n}= {\textstyle \sum_{i=0}^{n-1}} C_{i}C_{n-1-i}\)
递推公式 $ C_{n}=\frac{4n-2}{n+1} C_{n-1}$
通项公式$ c_{n}=\frac{1}{n+1}C_{2n}{n}=C_{2n}-C_{2n}^{n-1} $
应用:
- 棋盘问题
一个 \(n\) 行 \(n\) 列的棋盘,从左下角到右上角,一直在对角线右下方走,不穿过主对角线,走法有多少种。
就是通项公式的模型。
-
括号问题
-
出栈序列问题
-
二叉树问题
\(n\) 个节点构成的二叉树,共有多少种情况。
推荐例题
P1044 栈
P1641 生成字符串
P2532 树屋阶梯
第一类斯特林数
表示 \(n\) 个不同的元素,划分为 \(m\) 个非空圆排列中,记作 \(s(n,m)\) 或 \({n \brack m}\)
通项公式
考虑第 \(n\) 个元素怎么放。
- 如果前 \(n-1\) 个元素占了 \(m-1\) 个圆排列,则第 \(n\) 个元素必须占第 \(m\) 个圆排列,方案数为 \(\begin{bmatrix}n-1\\m-1\end{bmatrix}\)。
- 如果前 \(n-1\) 个元素占了 \(m\) 个圆排列,则第 \(n\) 个元素可以在这 \(n-1\) 个元素中任意一个的左边(或右边),根据乘法原理,方案数为 \((n-1)\begin{bmatrix}n-1\\m\end{bmatrix}\)。
第二类斯特林数
表示 \(n\) 个不同的球放进 \(m\) 个相同的非空盒子的方案数,记作 \(S(n,m)\) 或 \({n \brace m}\)。
递推式
递推式求解思路与第一类斯特林数相似,不再多说。
求解通项公式
设将 \(n\) 个不同的元素,最多放入 \(m\) 个集合中(即放入 \(m\) 个元素中,允许空集)的方案数为 \(G_m\)。设将 \(n\) 个不同的元素,恰好放入 \(m\) 个集合中(即不允许空集)的方案数为 \(F_m\)。
易知:
考虑用 \(F_m\) 表示 \(G_m\)。
根据反演公式,表示出 \(F_m\)
由于第二类斯特林数表示的是相同的盒子,那么就有 \(F_m={n\brace m}m!\),则。
性质推论
\(n>k\)
置换群
置换的合成运算不满足交换律
\(Burnside\) 定理
设 \(G\) 是 \(S\) 的置换群, \(f\) 是 \(G\) 的一个置换,设 \(\lambda(f)\) 为置换 \(f\) 中不变元的个数,则置换群 \(G\) 的不等价类数为:
生成函数
通过代数手段解决组合技术问题。把组合问题的加法与幂级数的乘幂对应起来。
- 普通型生成函数:
对于序列 \(S\) $h_0,h_1,h2,\cdots $ 构造函数 \(g(x)=h_0+h_1x+h_2x^2 \cdots\),称 \(g(x)\) 为序列 \(S\) 的母函数。
处理组合数
- 指数型生成函数:
对于序列 \(S\) $h_0,h_1,h2,\cdots $ 构造函数 \(g(x)=h_0+\frac{h_1}{1!}x+\frac{h_2}{2!}x^2+\frac{h_3}{3!} \cdots\),称 \(g(x)\) 为序列 \(S\) 的母函数。
仅仅多了对分母 \(k!\) 的处理,用于处理排列数。
概率与统计
概率模型
-
古典模型 各个基本事件出现的概率相等的情形。
-
几何概型 基本事件有无数个,任何单个基本时间的发生概率都是0,求几何概型的问题用数形结合方式。
-
条件概率 在 \(B\)事件发生的前提下,\(A\) 事件发生的概率 记为 $P\left( A \mid B\right) = $
贝叶斯公式
期望
期望是试验中每次可能的结果乘以其结果的概率的总和, 即随机变量的输出值的加权平均数。用 \(X\) 表示随机变量, \(E\left( X \right)\) 表示期望。
概率分布
设成功的概率是 \(p\) 。
- 两点分布,又称伯努利分布,试验只有成果失败两种可能,即 \(1\) 或 \(0\)。\(E\left(X\right) = p *1 +\left(1-p\right)*0=p\)。
- 几何分布。在伯努利试验中,进行了 \(k\)次试验,第 \(k\) 次才成功的概率是 \(P\left(X=k\right)=\left(1-p\right)^{k-1}p\) 期望是 \(E\left(X\right)= \frac{1}{p}\)。
- 二项分布 。进行 \(n\) 次伯努利试验,成功 \(k\) 次。概率是 $P\left ( X=k \right ) =C_{n}{k}p_{}\left ( 1-p \right )^{n-k} $ 。 期望是 \(E\left ( X \right )=np\)。
- 超几何分布,描述抽样不放回。 有 \(N\) 个产品,其中 \(K\) 个不合格, 抽出 \(n\) 个样品检验,抽样中有多个个不合格。设有 \(k\) 个不合格 概率是 $P\left ( X=k \right ) =\frac{C_{K}^{k} C_{N-K}^{n-k} }{C_{N}^{n}} $ 期望是 \(E\left ( X \right ) = n\frac{K}{N}\)。
线性代数
矩阵乘法
矩阵乘法的实质是将一个矩阵分成两个基向量,这两个基向量构成了矩阵,然后分别将两个基向量进行矩阵变换。
注意:矩阵乘法满足结合律,因此可以进行快速幂,但是不满足交换律, 需要注意顺序,矩阵乘法是从右往左读的,将右边的拆开乘。
扩展, 对于 \(L\) 维的矩阵也可以计算。
计算 \(L\) 维的矩阵 \(C=AB\).
实现方式:一般用构造结构体+重载运算符的方法定义
注意事项
- 矩阵快速幂的题通常不适合难,需要找到至少两个变量之间的线性关系,通过矩阵构造出来。
- 同时注意矩阵初始化。
- 用快速幂时,注意判断大于0。
例题
行列式
行列式 对于一个 \(n*n\) 的矩阵,其 \(n\) 阶行列式的值为 \(det(A)\) 或 \(\left|A\right|\)。定义为:
\(p\) 表示一个排列,所有可能的 \(p\) 则是 \(1\) 到 \(n\) 这 \(n\) 个数字的全排列,\(T(p)\) 表示 \(p\) 这个排列中逆序对的个数。
线性基
线性基是一种擅长处理异或问题的数据结构。
性质
-
原数列里的任何一个数都可以通过线性基里的数异或表示出来。
-
线性基里任意一个子集的异或和都不为 \(0\)。
-
一个数列可能有多个线性基,但是线性基中数的数量一定唯一,而且是满足性质一的基础上最少的。
用途
- 快速查询一个数是否可以被一堆数异或出来
- 快速查询一堆数可以异或出来的最大/最小值
- 快速查询一堆数可以异或出来的第k大值
实现方式
直接构造线性基,或者使用高斯消元求线性基。