基础算法与数学总结 【第四部分 数学】
基础算法与数学总结 【第四部分 数学】
1 质数
定义1.0.1 质数
质数是无法被除了1与它本身的自然数整除的数。
本章略:质数判定、质因数分解(两个都是试除法)
1.1 筛法
当然,筛法可不止用来筛个质数,注意到很多的常用函数都跟质因子有关系,筛法基于累计质因子的方法筛掉合数,累计的时候其实也就知道了合数的其中一个质因子。
筛法现阶段常用两种,即埃氏筛和线性筛。
埃氏筛就是直接累积质因子,这样可能出现重复,而线性筛通过从大到小累计质因子来唯一确定唯一分解。
时间复杂度证明略,这超出了讨论范围。
埃氏筛的时间复杂度是
定理1.1.1 算术基本定理
任何一个大于1的正整数都能唯一分解成有限个质数的乘积,可以写作:
其中,
这条定理把对于自然数的研究转化为对质数的研究。
同时这里还要提到质数的分布:1至N中质数个数约为
2 约数
定义2.0.1 约数与倍数
如果整数n除以整数c的余数为0,则称c是n的约数,n是c的倍数,记作
试除法与倍数法的推论
-
一个整数N的约数个数上界为
2\sqrt{N} -
1-N的每个数的约数之和是
N \log N
这两个推论是对算法过程的分析而得出的。
推论2.0.1 算术基本定理的推论
推论2.2.1 欧拉函数的计算式
若在算术基本定理中
由欧拉函数的定义,我们知道
定义2.2.3 积性函数
如果当
推论2.2.2-2.2.7 欧拉函数的性质
-
对于所有大于1的n,1到中与n互质的数之和为
\frac{n\times \varphi(n)}2 -
欧拉函数
\varphi 是积性函数 -
若
f 是积性函数,则在算术基本定理中n=\prod_{i=1}^mp_i^{c_i} ,则f(n)=\prod_{i=1}^{m}f(p_i^{c_i}) -
设
p 为质数,若p\mid n 且p^2\mid n ,则\varphi(n)=\varphi(\frac{n}{p})\times p -
设
p 为质数,若p\mid n 但是p^2\nmid n ,则\varphi(n)=\varphi(\frac{n}{p})\times(p-1) -
\sum_{d\mid n}{\varphi(d)}=n
简单证明:
-
由于以上九章算术的算法,若有一个数
x 与n 互质(即最大公约数为1),那么就一定有n-x 也是与n 互质。所以每一对的平均数都是\frac{n}{2} ,总体也是这样。 -
对a,b 分解质因数然后带进
\varphi 的计算式 -
由定义易得
-
由原命题,n中含一个以上质因子p,则
\frac{n}{p} 只是少了一个p,其它不变,使用欧拉函数计算式相除得到 -
由2易得
-
构造函数f等于上式左边,乘开然后利用性质2得f是积性函数,证明f对于单个质因子满足
f(p^m)=p^m ,得证。
这些性质不知道会在什么时候有用,无论如何,最先考虑的都是建模。
3 同余
定义3.0.1 同余
若整数
-
同余式相乘:若
a≡b\pmod m ,c≡d\pmod m ,则a\times c≡b\times d\pmod m -
a\equiv b\pmod m \implies m\mid (a-b) -
若
a\equiv b\pmod m 则ak\equiv bk\pmod m -
若
ak\equiv bk\pmod m 且存在\gcd(k,m)=1 则a\equiv b\pmod m
证明略。总共的方法就是将同余式化成余数的定义式。
定理3.0.2 费马小定理
若
定理3.0.3 欧拉定理
若正整数
利用“同一法”,证明简化剩余系的可替换性,构造替换后的同余式,两边同时除以得到欧拉定理。
然后费马小定理就是欧拉定理的一个特殊情况。
推论3.0.2 欧拉定理的推论
若正整数
证明略。
对于一般的加减乘运算,我们都可以将操作数先模再算。然后这条推论告诉我们对于乘方运算也可先把底数模p再把指数模
推论3.0.3
若正整数
反证法证明,略。
3.1 扩展欧几里得算法
定理3.1.1 裴蜀定理
对于任意整数
证明思路如下,数学归纳法:
-
论证基点:对于
\gcd(a,0) 有x=1,y=0 满足 -
证明若对于
\gcd(b,a\bmod b) 成立,则对于\gcd(a,b) 成立。-
由于定理2.1.3,
\forall b>0 ,\gcd(a,b)=\gcd(b,a\bmod b) 。 -
那么将
\gcd(b,a\bmod b) 设参变换成为裴蜀定理的形式然后就能推知这样的x,y存在
-
同时这也告诉了我们如何求解这样的式子。
对于更加一般的式子只需要运用等式的基本性质变换即可。
定义3.1.1 乘法逆元
乘法逆元是满足这样式子
所以乘法逆元就是在模意义下消除乘法影响的一个数。这就是除法的含义。
对于大数的除法在模p意义下,不能分子分母模之后再计算,但是可以计算出分母的乘法逆元转化为乘法。
若模数p是质数,那么由费马小定理得
如果只是保证
需要注意当分母与模数不互质时,乘法逆元不存在,注意特判。
3.2 线性同余方程
由推论3.0.1.6并设参将线性同余方程化为裴蜀定理。
方程的解法略。方程的通解是所有模
定理3.2.1 中国剩余定理(CRT)
已知正整数
n_1, \dots, n_k 两两互质,定义N=\prod_{i=1}^k n_i 和N_i=\frac{N}{n_i} 又已知整数a_1, \dots, a_k ,那么同余方程组 。\begin{cases}x\equiv a_1 \pmod{n_1}\\ x\equiv a_2 \pmod{n_2}\\ \vdots\\ x\equiv a_k\pmod{n_k}\end{cases} 在
0\le x < N 范围内有且仅有一个解 。 因为\gcd(n_i, N_i)=1\quad \forall i\in\{1, 2, \dots, k\} ,由裴蜀定理我们能够得到对于每一个i\in\{1, \dots, k\} 存在整数M_i, m_i 使得M_iN_i+m_in_i=1\\ 。 通过扩展欧几里得算法求出M_1, \dots, M_k ,这个同余方程组的一个特解就可以表示为x_0=\sum_{i=1}^k a_i M_iN_i \\ 通解可以表示为x=Nq+x_0\\ ,其中q\in \mathbb{Z} 是任意整数
证明略。CRT可以使用EXCRT替换,后者适应的情况更多,同样都要解k个线性同余方程。
EXCRT考虑使用数学归纳法,假如已经求出前i-1个方程的特殊解x,则前i-1个方程的通解是:
4 矩阵乘法
矩阵乘法的定义太复杂,说个简单的:
-
C_n^m=C_{n-1}^m+C_{n-1}^{m-1} -
\sum_{i=0}^nC_n^i=2^n
以上推论根据6.0.2乘法/6.0.1加法原理以及组合数的定义不难证明。
组合数与排列数包含阶乘除法,我们常常需要预处理阶乘以及阶乘的逆元来处理。
这些性质可以用于递推求组合数等。
定理6.0.1 二项式定理
对求和运算符进行代数变化可得结论。应用数学归纳法:
-
证明n=1时成立
-
设n=m时成立,判断n=m+1时成立
代数变形过于复杂,略去。
定理6.0.2 多重集的排列组合数
多重集的排列数:
其中n是集合的大小,分子每一个
多重集的组合数(保证取出的数小于任何一个元素的数量):
k是元素的种类数,r是取出的元素数量。
证明略。下面多重集的组合数是通过转化条件,将r看作物品,使用k-1个板子分这些物品得到的。
定理6.0.3 Lucas定理
如果p是质数,则对于任意的整数
证明超出了讨论范围,略。
这条定理使得我们在计算模意义下的组合数时可以先模/除再乘。
定理6.0.4 Catalan数列
给定n个0与n个1,把它们按照某种顺序排成一列,满足任意前缀0的个数都不大于1的个数的排列数量是:
证明略。有一些问题与卡特兰数列有关:括号序列、出栈序列、二叉树构成数量等。
7 容斥原理与莫比乌斯函数
原理7.0.1 容斥原理
如果
简单提炼一下:奇加偶减
多重集的组合数略。本质上是:
-
先不考虑每一种的数量限制使用定理6.0.2
-
然后减去至少有一个数选多了的情况,使用容斥原理
定义7.0.1 莫比乌斯函数
设正整数
称
这个函数反映了
如果要求大量该函数的值,同
8 概率与数学期望
定义略。
通俗地说:
-
随机变量将实验的结果映射成为数
-
样本点是随机变量的可能取值,即随机实验的一种结果
-
样本空间是包含样本点的集合
-
随机事件是样本空间的子集,即我们想关心的随机试验的某些结果,概率就是对于这说的。
-
数学期望是随机变量取值与其概率的乘积之和,概括来说,数学期望是出现概率最大的随机变量取值(尽管它有可能不在样本空间中)
推论8.0.1 数学期望是线性函数
满足
这一性质是我们可以对数学期望递推求解的根本依据。
9 0/1分数规划
0/1分数规划问题描述略。
之前我们在图论总结里面说:
其实0/1分数规划可以这样想,就是设一个mid,然后建立一个不等式
然后再化成大于小于0的形式就行了
这样逆向想比正着要好很多。
10 博弈论初步
NIM博弈以及相关概念略,其很想动态规划以及搜索我们提到的状态空间。只不过把状态换成了“局面”。
考虑这种问题一般都考虑无失误的理想情况。
定理10.0.1 NIM博弈的胜负
NIM博弈先手必胜,当且仅当每堆石子的数量之异或和非0。
考虑数学归纳法:
-
对于所有物品都取光,显然是必败局面
-
证明所有满足定理的情况都可以使得对手面对石子异或起来等于0的局面
-
证明所有不满足定理的情况在取一步都必然使得石子再异或起来不等于0
-
反推
定义10.0.1 公平组合游戏ICG
若一个游戏满足:
-
由两名玩家交替行动
-
每一次可以执行的合法操作与轮到哪个玩家无关
-
不能行动的玩家判负
公平组合游戏的进程可以转化为一张DAG(有向图游戏),其中入度为0的点(起始状态)只有一个。
定义10.0.2 Mex运算
定义S是一个非负整数集合,那么
定义10.0.3 SG函数
对于每一个局面
若有 m 个有向图游戏,定义一个有向图游戏
定理10.0.2
有向图游戏的某个局面必胜,当且仅当该局面的SG函数值大于0。
有向图游戏的某个局面必败,当前仅当该局面的SG函数值小于0。
证明类似NIM游戏,略。求解此类问题,要找准起始状态、胜利状态、失败状态,然后倒推,适当时还要考虑转换一个游戏为多个游戏的和。
11 例题
- 197. 阶乘分解 - AcWing题库
方法本来没什么好说的。但是分解阶乘的质因数在题目要求对组合数进行高精度运算的时候十分实用,避免了高精度除法。
- P2261 [CQOI2007] 余数求和
首先
然后这个过程就神奇了,恐怕lyd是没想着让你看懂。
这个规律如果要找,就只能先手模,然后猜,笔者也不知道lyd怎么设出
- 204. 表达整数的奇怪方式 - AcWing题库
这道题的模数不一定两两互质,使用EXCRT。不再赘述。
- 206. 石头游戏 - AcWing题库
考虑把矩阵变成向量,并且移动数、加、取走都可以用矩阵加与乘表示。然后对于每一秒构造转移矩阵。
这里有一个技巧:我们加了一行用来存储常数1,来作为石头来源,当需要常数加的时候可以考虑。
-
P2886 [USACO07NOV] Cow Relays G 上面已经提过,把乘法变成min就好
-
208. 开关问题 - AcWing题库
这道题对高斯消元的使用范围进行了扩展。
异或运算当然也能类似的将行向量张成“异或空间”,该空间对于向量异或和运算封闭。这是他可以使用高斯消元的原因。
- P4318 完全平方数
这道题有比较明显的二分单调性,那么我们要解决的问题就是求一段区间之内有多少含平方因子。
为了避免重复统计:例如避免含4的平方被含16平方的再统计一次,这就自然引出容斥原理了。
然后找规律,发现容斥中数x的系数正是
- 218. 扑克牌 - AcWing题库
期望DP,通常都要从终止状态开始倒推。因为如果要正着推是需要算出从起始到终止的概率的,不方便。如果起始状态唯一,那么它的概率当然是1,这就不用计算了。
- 219. 剪纸游戏 - AcWing题库
这道题的每一个操作将一个有向图游戏切成更多独立的有向图游戏。但是这道题有一个特殊的地方,就是不能行动的局面要判胜,这不符合ICG的定义。
我们通过几个无法行动状态之前的必败局面作为终止状态,将这个问题进行了转换。
- P8854 [POI2002] 超级马
这道题并不是数学。
但是实际上这道题的思想与线性空间的基十分相似。
把每一个移动方式看成二维向量,那么题目就是求这些向量可不可以生成整个二维线性空间。
所以有可能亦可以用高斯消元,看看消完之后会不会剩下一个(1,0)/(0,1)