数论学习笔记

线性代数

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-1} \equiv 1 \pmod{p} \]

\[a*a^{p-2} \equiv 1 \pmod{p} \]

所以 $a^{p-2} $ 就是 \(a\) 在模 \(p\) 意义下的逆元。

欧拉定理

\(a,n\) 是正整数,若 \(a\)\(n\) 互质,则

\[a^{\varphi(n)} \equiv 1 \pmod{n} \]

\(n\) 是质数时,\(\varphi(n)=n-1\),就是费马小定理。

扩展欧拉定理

\(a,n\) 是正整数,有

\[a^{2\varphi(n)} \equiv a^{\varphi(n)} \pmod{n} \]

推论:
对于任意的 \(a,k,n\),有:

  • 如果 \(k < \varphi(n)\)

\[a^{k} \equiv a^{k}\pmod{n} \]

  • 如果 \(k\ge \varphi(n)\)

\[a^{k} \equiv a^{k \mod \varphi(n)+\varphi(n)} \pmod{n} \]

P5091 【模板】扩展欧拉定理

裴属定理:

对于整数 \(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)\) 倍数时有整数解。

P2520向量

算术基本定理

任何大于 \(1\) 的正整数 \(n\) 都可以分唯一分解为有限个质数的乘积:

\[n=p_1^{k_1}p_2^{k_2}p_3^{k_3}......p_m^{k_m} \]

其中 \(p_i\) 都是质数,\(k_i\) 都是正整数。

\[a*b = \operatorname{lcm}(a,b) *\gcd(a,b) \]

因数个数定理

\(n=p_1^{k_1}p_2^{k_2}p_3^{k_3}......p_m^{k_m}\)\(p_i\)\(n\) 的因数。

\(n\) 的因数个数为

\[\prod_{i=1}^{m}(k_i+1) \]

因为每个因数的范围是 \((k+1)\) 可以等于 \(0\)

威尔逊定理

\(p\) 为质数,则 \(p\) 可以整除 \((p-1)!+1\)

\[(p-1)!=pq+1 \]

\[(p-1)!\mod p = p-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)\)

  • 莫比乌斯函数

\[\mu =\begin{cases}1, n=1 \\(-1)^k,n=p_1p_2..p_k,k 为 n 的质因子个数 \\0,n有平方因子\end{cases} \]

欧拉函数

定义:

\[\varphi(n)= \prod_{i=1}^{n} gcd(i,n)=1 \]

性质:

\[n=\sum_{d\mid n}\varphi(d) \]

递推式:

\[\varphi(n) = n* \prod(1- \frac{1}{p_i}) \]

\(p_i\)\(n\) 的每一个除 \(1\) 和他自身的质因数。

证明:

因为 \(\varphi\) 为积性函数,即:

\[n=p_1^{k_1}p_2^{k_2}p_3^{k_3}......p_m^{k_m} \]

\[\varphi(n)=\varphi( \prod_{i=1}^{t}p_{i}^{k}) \]

那么只要考虑 \(\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})\)

所以就得出:

\[\varphi(n) = n* \prod(1- \frac{1}{p_i}) \]

线性欧拉筛

\[\varphi (n)=n(1-\frac{1}{p_1})(1-\frac{1}{p_2})(1-\frac{1}{p_3})……*(1-\frac{1}{p_k}) \]

根据欧拉筛筛质数的方法,双层枚举。分两种情况讨论。

\(n*p\) 的值

  • \(n \mod p==0\)\(n\)\(p\) 不互质, \(p\)\(n\) 的一个质因子。

假设将 \(n\) 分解成

\[p_1^{k_1}p_2^{k_2}p_3^{k_3}......p_m^{k_m} \]

假设 \(p==p_1\),则 \(n*p\) 分解成

\[p_1^{k_1+1}p_2^{k_2}p_3^{k_3}......p_m^{k_m} \]

利用欧拉函数的计算公式

\[φ(n*p)=p_1n(1-\frac{1}{p_1})(1-\frac{1}{p_2})(1-\frac{1}{p_3})……*(1-\frac{1}{p_k}) \]

\(φ(n*p)=φ(n) * p\)

  • \(n \mod p \ne 0\)\(n\)\(p\) 互质,根据积性函数定义 $φ(np)=φ(n)φ(p) $

莫比乌斯函数

定义:

\[\mu =\begin{cases}1, n=1 \\(-1)^k,n=p_1p_2..p_k,k 为 n 的质因子个数 \\0,n有平方因子\end{cases} \]

性质:

  • \[\sum_{d \mid n}\mu(d)=[n=1] \]

  • \[\sum_{d\mid n}\frac{\mu(d)}{d}=\frac{\varphi(n)}{n} \]

定理,莫比乌斯的和函数在整数 \(n\) 处的值 \(F(n)\)

\[F(n)=\sum_{d \mid n} \mu(d)= \begin{cases}1,n=1\\0,n>1\end{cases} \]

莫比乌斯函数同样可以线性筛出。

实用技巧:

  • \[\sum_{d\mid \gcd(i,j)}\mu(d) =\left[\gcd(i,j) =1\right ] \]

推一些式子:

\[\sum_{i=1}^{a}\sum_{j=1}^{b}[\gcd(i,j)=1] \]

这里

\[\sum_{k=1}^{\min(a,b)} \sum_{i=1}^{a}\sum_{j=1}^{b}[\gcd(i,j)=k] (k\in prime) \]

这里

\[\sum_{i=1}^{n}\sum_{j=1}^{m}\gcd(i,j)^k \]

这里

莫比乌斯反演

对于一个算术函数 \(f(n)\),它的和函数满足 \(F(n)=\sum_{d\mid n}f(d)\),则

\[f(n)=\sum_{d \mid n}\mu(d)F(\frac{n}{d}) \]

另一种形式

若:

\[F(n)=\sum_{n\mid d}f(d) \]

则:

\[f(n)=\sum_{n \mid d}μ(\frac{d}{n})F(d) \]

P2257 YY的GCD

狄利克雷卷积

\[(f*g)(n)=\sum_{d\mid n}f(\frac{n}{d})g(d) \]

三个常用函数:

  • 元函数

\[\varepsilon(n)=[n=1] \]

  • 常数函数

\[1(n)=1 \]

  • 恒等函数

\[id(n)=n \]

常见卷子关系:

  1. \[\sum_{d\mid n}\varphi(d)=n \Leftrightarrow \varphi*1=id \]

  2. \[\sum_{d\mid n}\mu(d)=[n=1] \Leftrightarrow \mu*1=\varepsilon \]

  3. \[\sum_{d\mid n}\frac{n}{d}\mu(d)=\varphi(n)\Leftrightarrow \mu*id=\varphi \]

杜教筛

杜教筛 \(=\) 狄利克雷卷积 \(+\) 整除分块 \(+\) 线性筛

\[g(1)s(n)=\sum_{i=1}^{n}h(i)-\sum_{i=2}^{n}g(i)s(\left \lfloor \frac{n}{i}\right \rfloor ) \]

证明

P3768 简单的数学题

组合数学

排列数

\(n\) 个人中选取 \(m\) 个人,考虑相对顺序,方案数为 \(A_{n}^{m} = \frac{n!}{(n-m)!}\)

组合数

\(n\) 个人中选取 \(m\) 个人,不考虑相对顺序,方案数为 \(C_{n}^{m} = \frac{n!}{m!(n-m)!}\)

性质

\[\binom{n}{i}\binom{i}{j}=\binom{n}{j}\binom{n-i}{i-j} \]

\[\sum_{2\mid i}C_{n}^{i}=\sum_{2 \perp i}C_{n}^{i} \]

\[\sum_{i=0}^{n}C_{n}^{i}=2^n \]

求组合数取模

因为除法没有取模,可以用逆元取模

  • 如果取模确定的话,可以用阶乘预处理求逆元。求逆元可以用费马小定理,\(a\) 在模 \(p\) 意义下得的逆元是 \(a_{}^{p-2}\),而 \(a_{}^{p-2}\) 可以用快速幂求出。
  • 取模不确定。即不能预处理逆元,可以用 \(Lucas\) 定理,通常用于阶乘无法解决的问题。

\(Lucas\)定理

\[C_{n}^{m}\equiv C_{n \bmod p}^{m \bmod p} * C_{\left \lfloor n/p \right \rfloor }^{\left \lfloor m/p \right \rfloor }\pmod p \]

实现方式,递归。

P3807 【模板】卢卡斯定理/Lucas 定理

P5684 [CSP-J2019 江西] 非回文串

容斥原理

$ \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 | $

P1450 硬币购物
P2567 幸运数字

二项式反演可以解决下列问题
Another Filling the Grid
P6076 [JSOI2015] 染色问题

P6076 题解

二项式定理

\[\left ( a+b \right ) _{}^{n} = \sum_{i=0}^{n}C_{n}^{i}a_{}^{i}b_{}^{n-i} \]

推论

\[(x+1)^n= \sum_{i=0}^{n}C_{n}^{i}x^i \]

\(x=1\) 时,可以证明:

\[\sum_{i=0}^{n}C_{n}^{i}=2^n \]

二项式反演

至少/ \(n\) 个的方案数量,和恰好 \(n\) 个的方案数量。

\(f_i\) 表示恰好 \(i\) 个数满足特定结构,\(g_i\) 表示至少 \(i\) 个数满足特定结构。

如果已知 \(f_i\),根据定义可以得出 \(g_k\) 的通项公式。

\[g_k=\sum_{i=k}^{n} C_{i}^{k} f_i \]

若已知 \(g_k\),求 \(f_k\),有以下反演公式。

\[f_k=\sum_{i=k}^{n}C_{i}^{k}(-1)^{i-k}g_i \]

形式二:
此时 \(g_i\) 表示至多

\[g_n=\sum_{i=0}^{n} \binom{n}{i} f_i \Longleftrightarrow f_n=\sum_{i=0}^{n}\binom{n}{i}(-1)^{n-i}g_i \]

P4859 已经没有什么好害怕的了

错排问题

有一个 \(n\) 个元素的排列,现在使得每一个元素都不在自己原来的位置上,共有多少种排列方式。

上述就是一个典型的错排问题,考虑递推解决,用 \(D_n\) 来表示。

假设原来按照元素 \(1\) 在第 \(1\) 号位置上,元素 \(2\) 在第 \(2\) 号位置上,以此类推。

  1. 假设把元素 \(1\) 放在第 \(k\) 个位置上,共有 \(n-1\) 中可能。

2.考虑元素 \(k\) 的位置

  • 假设在第 \(1\) 个位置上,那么此时第 \(1\) 个位置和第 \(k\) 个位置上的元素是确定的,对于剩下不确定的 \(n-2\) 个位置来说,保证他们是错排的就好,方案数为 \(D_{n-2}\)

  • 假设不在 \(1\) 个位置上,那么整个序列中只确定了第 \(k\) 个位置上的元素,对于剩下不确定的 \(n-1\) 个元素来说,保证他们是错排的,方案数为 \(D_{n-1}\)

根据乘法原理,递推公式就是:

\[D_{n}=(n-1)(D_{n-1}+D_{n-2}) \]

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}\)

P2638 安全系统

隔板法问题

P5505 JSOI201 分特产

一道二项式反演加上隔板法的题

P7322 「PMOI-4」排列变换

P2606 [ZJOI2010] 排列计数

一道思路很绝妙的题目,将排列转化为小根堆,根据乘法原理即可计算。

卡特兰数

初始值$ 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} $

应用:

  1. 棋盘问题

一个 \(n\)\(n\) 列的棋盘,从左下角到右上角,一直在对角线右下方走,不穿过主对角线,走法有多少种。

就是通项公式的模型。

  1. 括号问题

  2. 出栈序列问题

  3. 二叉树问题

\(n\) 个节点构成的二叉树,共有多少种情况。

推荐例题

P1044 栈
P1641 生成字符串
P2532 树屋阶梯

第一类斯特林数

表示 \(n\) 个不同的元素,划分为 \(m\) 个非空圆排列中,记作 \(s(n,m)\)\({n \brack m}\)

通项公式

\[{n \brack m}={n-1 \brack m-1}+ (n-1){n-1 \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}\)

P4609 [FJOI2016] 建筑师

第二类斯特林数

斯特林数

表示 \(n\)不同的球放进 \(m\)相同非空盒子的方案数,记作 \(S(n,m)\)\({n \brace m}\)

递推式

\[{n \brace m} = {n-1 \brace m-1}+m{n-1 \brace m} \]

递推式求解思路与第一类斯特林数相似,不再多说。

求解通项公式

设将 \(n\) 个不同的元素,最多放入 \(m\) 个集合中(即放入 \(m\) 个元素中,允许空集)的方案数为 \(G_m\)。设将 \(n\) 个不同的元素,恰好放入 \(m\) 个集合中(即不允许空集)的方案数为 \(F_m\)

易知:

\[G_m=m^n \]

考虑用 \(F_m\) 表示 \(G_m\)

\[G_m= \sum_{i=0}^{m} \binom{m}{i}F_i \]

根据反演公式,表示出 \(F_m\)

\[F_m=\sum_{i=0}^{m}(-1)^{m-i}\binom{m}{i}G_i \]

\[F_m=\sum_{i=0}^{m}(-1)^{m-i}\binom{m}{i}i^n \]

\[F_m=\sum_{i=0}^{m}\frac{m!(-1)^{m-i}i^n}{i!(m-i)!} \]

由于第二类斯特林数表示的是相同的盒子,那么就有 \(F_m={n\brace m}m!\),则。

\[{n \brace m}=\sum_{i=0}^{m}\frac{(-1)^{m-i}i^n}{i!(m-i)!} \]

性质推论

\[n^k=\sum_{i=0}^{k}{k \brace i }\binom{n}{i}i! \]

\(n>k\)

置换群

置换的合成运算不满足交换律

\(Burnside\) 定理

\(G\)\(S\) 的置换群, \(f\)\(G\) 的一个置换,设 \(\lambda(f)\) 为置换 \(f\) 中不变元的个数,则置换群 \(G\) 的不等价类数为:

\[\frac{\sum_{f\in G} \lambda(f)}{\left | G \right | } \]

生成函数

通过代数手段解决组合技术问题。把组合问题的加法与幂级数的乘幂对应起来。

  • 普通型生成函数:

对于序列 \(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) = $

贝叶斯公式

\[P\left ( A\mid B \right ) =\frac{P\left ( A\bigcap B \right ) }{P\left ( B \right ) }=\frac{P\left ( B \mid A \right ) P\left ( A \right ) }{P\left ( B \right ) } \]

期望

期望是试验中每次可能的结果乘以其结果的概率的总和, 即随机变量的输出值的加权平均数。用 \(X\) 表示随机变量, \(E\left( X \right)\) 表示期望。

P1654 OUS

概率分布

设成功的概率是 \(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}\)

线性代数

矩阵乘法

\[ BA =\begin{bmatrix} a& b \\c &d \end{bmatrix}\begin{bmatrix} e&f \\g &h \end{bmatrix}=\begin{bmatrix} ae+bg&af+bh \\ ce+dg&cf+dh \end{bmatrix}\]

矩阵乘法的实质是将一个矩阵分成两个基向量,这两个基向量构成了矩阵,然后分别将两个基向量进行矩阵变换。

注意:矩阵乘法满足结合律,因此可以进行快速幂,但是不满足交换律, 需要注意顺序,矩阵乘法是从右往左读的,将右边的拆开乘

扩展, 对于 \(L\) 维的矩阵也可以计算。
计算 \(L\) 维的矩阵 \(C=AB\).

\[C_{i,j}=\sum_{k=1}^{L}A_{i,k}B_{k,j} \]

实现方式:一般用构造结构体+重载运算符的方法定义

注意事项
  • 矩阵快速幂的题通常不适合难,需要找到至少两个变量之间的线性关系,通过矩阵构造出来。
  • 同时注意矩阵初始化。
  • 用快速幂时,注意判断大于0。
    例题

P4838 P哥破解密码
P4910 帕秋莉的手环

行列式

行列式 对于一个 \(n*n\) 的矩阵,其 \(n\) 阶行列式的值为 \(det(A)\)\(\left|A\right|\)。定义为:

\[det(A)=\sum_{p}(-1)^{T(p)}\prod_{i=1}^{n} a_{i},{p_{i}} \]

\(p\) 表示一个排列,所有可能的 \(p\) 则是 \(1\)\(n\)\(n\) 个数字的全排列,\(T(p)\) 表示 \(p\) 这个排列中逆序对的个数。

P7112[模板]行列式求值

线性基

线性基是一种擅长处理异或问题的数据结构。

性质
  • 原数列里的任何一个数都可以通过线性基里的数异或表示出来。

  • 线性基里任意一个子集的异或和都不为 \(0\)

  • 一个数列可能有多个线性基,但是线性基中数的数量一定唯一,而且是满足性质一的基础上最少的。

用途
  • 快速查询一个数是否可以被一堆数异或出来
  • 快速查询一堆数可以异或出来的最大/最小值
  • 快速查询一堆数可以异或出来的第k大值
实现方式

直接构造线性基,或者使用高斯消元求线性基。

posted @ 2024-08-22 11:34  龙麟羽  阅读(9)  评论(0编辑  收藏  举报