【重学OI】数学大礼包
upd8.11 本文初步完工
upd8.14 加入拓展欧几里得数论分块和拓展CRT
upd8.20 加入莫反前置内容
ps:介于莫反过于重要,后续还会更新(若我不退役)
逻辑集合计数
逻辑
命题:指可以判断对错的叙述
真值:若命题为真则为真(\(1\)),否则为假(\(0\))
充分必要
\(p \Rightarrow q\) 指 \(p\) 推出 \(q\),\(p\) 为 \(q\) 充分条件,\(q\) 为 \(p\) 必要条件(可以理解为判定和性质的区别)
\(p \Leftrightarrow q\) 即互为充要条件
原命题:若 \(p\) 则 \(q\)
逆命题:若 \(q\) 则 \(p\)
否命题:若 \(\neg p\) 则 \(\neg q\)
逆否命题:若 \(\neg q\) 则 \(\neg p\)
其中原命题和逆否命题真值相同,否命题和逆命题互为逆否命题
量词
全称量词和存在量词:
\(\forall\) 对于任意,全称量词
\(\exists\) 存在,存在量词
考虑这么一件事,就是说
设函数 \(f(x)\)
考虑两种情况
\(\forall x \in R,f(x)<k\),\(k\) 的取值是
\(k>\max f(x)\),因为 \(\forall\) 的任意性
\(\exists x \in R,f(x)<k\)
由于只是存在,我们只能得知 \(k>\min f(x)\)
集合
集合元素三个特征:确定性、互异性、无序性
通常用 \(\{\}\) 描述集合,用 \(()\) 描述一个有序对
一个元素 \(a\) 属于 集合 \(A\) 记作 \(a \in A\),不属于记作 \(a \notin A\)
\(|A|\) 是 \(A\) 中元素个数
若两个集合 \(A\),\(B\) 满足 \(\forall x \in A,x \in B\),则称 \(A\) 被包含于 \(B\),记作 \(A \subseteq B\),\(A \supseteq B\) 反之同理
若同时满足 \(A \subseteq B\) 和 \(A \supseteq B\) ,则称 \(A=B\)
称 \(x^A\) 为 \(A\) 子集数量之和,即 \(x^{|A|}\)
由于讨论问题时常常要限定范围,则规定全集为所有讨论范围内的集合组成的集合
集合间基本运算主要有 \(\cup\)并 \(\cap\)交 \(\setminus\)差 \(\complement_U\) 全集为 \(U\) 下的补集(以下默认全集为 \(U\))
\(A \cup B = \{x|x \in A 或 x \in B\}\)
\(A \cap B = \{x|x \in A 且 x \in B\}\)
\(\complement_U A = \{x|x \in U 且 x \notin A\}\)
\(A \setminus B = \{x|x \in A 且 x \notin B\} = A \cap \complement_U B\)
运算律:显然并交满足交换和结合律
同时满足 "分配律" 即
\(A \cup ( B \cap C ) = (A\cup B) \cap (A \cup C)\),\(A \cap ( B \cup C ) = (A\cap B) \cup (A \cap C)\)
\(proof:\)
对于式一,\(\forall x \in A\cup (B\cap C)\)
若 \(x\in A\)则显然也属于右侧
若 \(x\in ( B \cap C )\),则显然其同时属于 \((A\cup B)\) 和 \((A\cup C)\)
对于式二,\(\forall x \in A \cap ( B \cup C )\),则其要么属于 \((A\cap B)\) 要么属于 \((A\cap C)\),右式成立
容斥原理
\(\left|\bigcup_{i=1}^{n} A_{i}\right|=\sum_{k=1}^{n}(-1)^{k-1} \sum_{1 \leq i_{1}<i_{2}<\cdots<i_{k} \leq n}\left|A_{i_{1}} \cap A_{i_{2}} \cap \cdots \cap A_{i_{k}}\right|\)
证明考虑计算贡献,可知左式每个元素出现一次,右式出现 \(C_{k}^{1}-C_{k}^{2}+C_{k}^{3}-\ldots+(-1)^{i-1} \cdot C_{k}^{i}+\ldots+(-1)^{k-1} \cdot C_{k}^{k}=1\)
应用:
欧拉函数
小于等于 \(n\) 的数中与 \(n\) 互质的个数,记作 \(\varphi (n)\)
令数列 \(p\) 为唯一分解后 \(n\) 的质因子数列, \(k\) 为质因子数,\(A_i\) 为 \(p_i\) 倍数个数
则 $\varphi(n)=n-\left|\bigcup_{i=1}^{n} A_{i}\right|=n\prod_{i=1}^{k} (1-p_i) $
另一个典型例子是
错排问题
设一个排列 \(z\),问有多少种 \(z_i \neq i\) 的排列
设 \(D_n\) 为 \(n\) 个数错排
易知全排列 \(n!\) 种
用全排列减去正确排序即为错排,即减去只对一位的方案数,但你会发现有些对多个位置方案也减掉了,于是考虑容斥
易知, \(D_n=\sum_{i=0}^{n} (-1)^i \binom{n}{i}(n-i)! =n!\sum_{i=0}^{n} (-1)^i\frac{1}{i!}\)
映射与计数
以下认为 \(A\),\(B\) 是两集合
对应关系 \(f:A\to B\) 按某种确定的对应关系 \(f\),使得对于 \(A\) 中任意一元素 \(x\) 在 \(B\) 中都有唯一确定的元素 \(f(x)\) 与之对应,称 \(f:A\to B\) 是集合 \(A\) 到 \(B\) 的一个映射
映射相关定义:在映射中, \(x\) 的取值范围称为映射的定义域, 与 \(x\) 对应的 \(f(x)\) 称为 \(x\) 在 \(f\) 下的像
集合 \(f(A)=\{f(x)|x\in A\}\) 称为映射的像集合
若 \(f(A)=B\) 则称映射 \(f\) 是一个满射 ,若 \(\forall x_1,x_2(x_1 \neq x_2),f(x_1) \neq f(x_2)\) 则称映射 \(f\) 是一个单射
若一个映射又是满射又是单射则称 \(f\) 为一一映射,此时存在反映射 \(f^{-1}:B \to A\) 满足 \(\forall x\in A,f^{-1}(f(x))=x\) 同时 \(\forall y\in B,f(f^{-1}(y))=y\)
映射很大的用途之一是判断无限集的大小,如果可以构造一个一一映射则说明二集合大小相等
可以证明整数集、偶数集、正整数集、有理数集可以构造出一一映射关系
此处给出对于实数集无法构造一个一一映射和上述集合的证明
设已经构造好一个有理数向实数的映射,那么假设排成的映射数列为\(z\),从而可以发现永远可以找到一个实数使得其第 \(i\) 位和 \(z_i\) 的第 \(i\) 位不同,也就是说这不是一个一一映射,过程就如在走对角线
我们也可以从映射角度来说组合数,但本文不这么做因为怕写错真的不是不会
此处给出一些常见的计数公式:
(1) \(\binom{n}{k}=\binom{n}{n-k}\)
(2) \(\sum_{i=0}^{n} \binom{n}{i} =2^n\)
(3) $\binom{n}{0}+\binom{n}{2}+\binom{n}{4}...= \binom{n}{1}+\binom{n}{3}+\binom{n}{5}... $
(4) $\binom{n}{k}=\binom{n-1}{k}+\binom{n-1}{k-1} $
(5) $\binom{n}{k}=\frac{n}{k}\binom{n-1}{k-1}=\frac{n-k+1}{k}\binom{n}{k-1} $
(6)范德蒙德卷积
证明可以参考用其组合意义:
在一个大小为 \(n+m\) 的集合中取出 \(k\) 个数,可以等于把大小为 \(n+m\) 的集合拆成两个集合,大小分别为 \(n\) 与 \(m\),然后从 \(n\) 中取出 \(i\) 个数,从 \(m\) 中取出 \(k-i\) 个数的方案数。枚举 \(i\) 于是只需要考虑一种拆法(不同的拆法之间是等价的)
也可以用二项式定理,此处不给出
隔板法
一种常见的计数方法
例题:
(1) 数字之和为 \(6\) 的 五位数有多少
以下不妨设该五位数是 \(abcde\)
我们可以对这个数进行一次映射,映射为 $a(b+1)(c+1)(d+1)(e+1) $ 数字和为 \(10\)
为什么这么做?因为后四位可以为 \(0\),这样便于插板,不用考虑两个板子在一个空位
于是我们可以在平面上放十个球,在球之间插隔板,同一隔板里的球的个数之和即为各位的和
插板的方案数就是最后的方案数 $\binom{9}{4} $
(2) 数字之和为 \(40\)
考虑把每一位设成 \(9\) 然后隔板法处理每一位减去几
答案同上一问
递推归纳
数列基础
设公差为 \(d\),公比为 \(p\),\(S_i\) 为数列前 \(i\) 项和
对于等差数列 \(a\),\(a_n=a_1+(n-1)d=dn+a_1-d\)
等差数列 $S_n=\frac{(a_1+a_n)n}{2}=na_1+\frac{n(n-1)}{2}d $
对于等比数列 \(a\)
关于求和符号 \(\sum\) 的性质
(1) 重命名性质(任意更换下标字母不影响求和)
(2) 累加性质,即 $\sum_{i=1}^n a_i=\sum_{i=1}^m a_i + \sum_{i=m+1}^n a_i $
(3) 线性性质,即 \(\sum (a_i+b_i) = \sum a_i +\sum b_i\),\(\sum ka_i = k\sum a_i\)
(4) 交换顺序性质,即 $\sum_{i=1}^n \sum_{j=1}^m a_{ij}=\sum_{j=1}^m \sum_{i=1}^n a_{ij} $,这条性质有时仅仅交换顺序就会极大降低难度
裂项
裂项的根本意义在于裂项后错位相减去掉大量内容化简公式
例如 $\sum_{i=1}^n \frac{1}{i(i+1)}=\sum_{i=1}^n \frac{1}{i} -\frac{1}{i+1}=\sum_{i=1}^n \frac{1}{i} -\sum_{i=1}^n\frac{1}{i+1}= \sum_{i=1}^n \frac{1}{i} -\sum_{i=2}^{n+1}\frac{1}{i} $,消去相同项可得
$\text{原式 }=1-\frac{1}{n+1} $
体会一下裂项的思想,不作展开
abel恒等式
例题: $\sum_{i=1}^n \frac{2i-1}{2^i} $
考虑到 $\frac{1}{2^i} $ 好求和于是取其为 \(S\)
$\text{原式 }= (1-\frac{1}{2^n})(2n-1) - 2 \sum_{i=1}^{n-1} (1-\frac{1}{2^{i}}) = 2n-1-\frac{n}{2^{n-1}}+ \frac{1}{2^n} -(2n-2)+2-\frac{1}{2^{n-2}} =3-\frac{2n+3}{2^n} $
数学归纳法
一般形式在于:先证明某定理/公式 在 \(n\) 很小(多为 \(1\) )的时候成立,在证明若 \(k\) 成立则 \(k+1\) 时成立,那么证明成立
这是第一数学归纳法
类似的我们也可以证明很小成立,然后借由 \(n\le k\) 成立推出 \(n=k+1\) 成立
这是第二数学归纳法
例题:求证 \(1+3+5+...+(2n-1)=n^2\)
证明:当 \(n=1\) 显然成立,由 \(n=k-1\) 时成立,可知当 \(n=k\) 原式等于 \((n-1)^2+2n-1=n^2\) 故成立
求证 $\sum_{i=1}{n} \left \lfloor \frac{i}{2} \right \rfloor =\left \lfloor \frac{n}{2} \right \rfloor \left \lfloor \frac{n+1}{2} \right \rfloor $
证明: \(n=1\) 成立,设 \(n=k\) 成立,则当 \(n=k+1\) 时 $\text{原式}=\left \lfloor \frac{k+1}{2} \right \rfloor+ \left \lfloor \frac{k}{2} \right \rfloor \left \lfloor \frac{k-1}{2} \right \rfloor =\left \lfloor \frac{k+1}{2} \right \rfloor \left \lfloor \frac{k+2}{2} \right \rfloor $
故成立
可以考虑用第二类数归证明 满足 \(\sum_{i=1 \to n}x_i^3=(\sum_{i=1\to n} x_i)\) 的数列是 \(\{x_n=n\}\) ,自行证明
此处再给出一种拓展的 特殊的数学归纳法形式
找到一个发散于正无穷的数列 \(T\),证明在该数列上某式成立,再证明当 \(n=k\) 成立可推出 \(n=k-1\) 时成立
求证均值不等式的\(n\) 元形式(算数平均数大于等于几何平均数)
可以非常简单证明 \(n=2\) 成立
同样可以非常简单证明 在 \(T_n=2^n\) 上显然成立
递推太典了,基本上就是 \(DP\)
错排问题除了容斥解还有递推解
博弈论(不完全)
无平局无运气的游戏有必胜策略。
\(n\) 颗糖,A,B 轮流取 \(2^k\) 个,取完最后一个的获胜。
第一制胜点:0
递推:
- 只能到制胜点的都必败;
- 可以走到必败点才是制胜点。
猜:
\(P(3k)=1,P(3k+1)=0,P(3k+2)=0\)。
- Q1. 砝码问题 - 可以放一边
太水过了
- Q2. 砝码问题 - 可以放两边
\(n\) 个砝码最多称出的重量数为 \(\frac{3^n-1}{2}\),除以二是因为放左放右本质一样
- Q3.
1, 2, 4, 8, 16 g 的砝码全部按顺序放在天平左右两侧,保证左边一直重于右边,求方案数。
- 1 g,\(a_1=1\);
- 1, 2 g,\(a_2=3\);[1, 2|], [2, 1|], [2|1]
- 1, 2, 4 g,考虑把 1, 2 替换成 \(1\times 2, 2\times 2\),放 1 不会改变两边的大小关系,于是在第 1 步以后,左右都可放,递推式:\(a_{n+1}=(2n+1)a_n\)。
染色问题
\(n\) 边形,顶点染色为 A, B, C,相邻点颜色不同,求方案数。
答案为 \(3\times 2^n-1 和 n 颜色相同的方案数\)。
可以发现,要减去的相当于把 \(1\) 和 \(n\) 视为一个点,即为 \(n-1\) 时的答案,所以递推:\(a_{n+1}=3\times 2^n-a_n,a_3=1\)。
1, 2, 3 组成 \(n\) 位数,且需满足:1 的下一位不是 2,2 的下一位是 3。求方案数。
转化题意,1 的上一位是 1 或 3,2 的上一位是 3,3 的上一位是 1 或 2 或 3.
设第 \(k\) 位为 1 的有 \(x_k\) 个,为 2 的有 \(y_k\) 个,为 3 的有 \(z_k\) 个。
则有:\(x_1=y_1=z_1=1,x_{k+1}=x_k+z_k,y_{k+1}=z_k,z_{k+1}=x_k+y_k+z_k\),会发现也是很典的递推问题,但是是多维递推
卡特兰数
\(C_n\) 为 \(n\) 对括号,括号匹配(本质一样,左括号个数永远大于等于右括号个数)的序列数。
递推:
通项:
\(C_n\) 为 A, B 打乒乓球,从 \(0:0\) 打到 \(n:n\),A 从来没有落后过的方案数。
\(C_n\) 为在 \(n×n\) 的网格中,一开始在 \((0,0)\) 处,每次可以向上走一格或者向右走一格,在任一时刻,向右走的次数不能少于向上走的次数,合法路径数。
在任一时刻,向右走的次数不能少于向上走的次数” 的意思即是路径不能与\(y=x+1\) 有交点。对于与 \(y=x+1\) 有交点的路径,把第一个交点之后的路径沿 \(y=x+1\) 对称过去,可以发现每一个与 \(y=x+1\) 有交点的路径都唯一对应一条从 \((0,0)\) 到 \((n-1,n+1)\) 的路径,这样的路径一共有 \(\binom{2n}{n−1}\) 条,所以合法路径有 \(\boxed{C_n=\binom{2n}{n}-\binom{2n}{n−1}}\) 种,即为通项公式。
\(C_n\) 为一个圆周上有 \(2n\) 个点,两两配对并在两点间连一条弦,要求所连的n条弦没有交点,配对数。
锁定一个点,这个点最多连接两个点,连两边,即转化为括号序列。
\(C_{n-2}\) 为将 \(n\) 边的凸多边形以不相交的对角线分成 \(n-2\) 个三角形的方案数。
锁定一条边,这条边最多连接一个点,再考虑两边,同上。
\(C_n\) 为 \(\sum\limits_{i=1}^{2n} a_i(a_i\in\{-1,1\})=0,\forall 1\le k\le 2n,\sum\limits_{i=1}^k a_i\ge 0\) 的方案数。
递推转通项
主要分为两类
第一类: $a_{n+1}=ka_n +f(n) $ 其中 \(n \) 是一个与 \(n\) 有关的式子或常数
这里给出一种常用但可能用不了的方法 待定系数
但在此之前先来点难度小点的
比如 $a_1=1,a_{n+1}=a_n+2n-1 $
我们可以得到差分 \(a_{n+1}-a_n=2n-1\) 于是累加得 \(a_{n}=a_1+n(n-1)-n=(n-1)^2+1\)
同理遇到等比也可以转化
然后我们可以快乐的开始待定系数法
\(a_1=1,a_{n+1}=2a_n+1\) 我们可以设 \(a_{n+1}+k=2(a_n+k)\) 得 \(k=1\) 所以设 \(b_n=a_n+1\) 则这个数列等比就可以直接处理了
还有另一种方法是 把两边同除以 \(a_n\) 前系数的 \(n+1\) 次方,就转化为 \(\frac{a_{n+1}}{2^{n+1}}=\frac{a_n}{2^n}+\frac{1}{2^{n+1}}\) 那么 \(b_n=\frac{a_n}{2^n}\) 可以直接求和
差分
定义:\(\Delta h_n=h_{n+1}-h_n\).
二次差分 \(\Delta^2 h_n=\Delta h_{n+1}-\Delta h_n\).
与求和互为逆运算。
\(\Delta^2 a_n=0\) 的数列为等差数列。
\(\Delta^3 a_n=0\) 的数列为二级等差数列(平方数列)。
结论 1:若 \(f(n)\) 为 \(k\) 次多项式,\(\Delta^{k+1}f(n)=0\).
结论 2:\(\Delta\) 是线性运算,\(\Delta(a_n+b_n)=\Delta a_n+\Delta b_n,\Delta(ka_n)=k\Delta a_n\).
原数列 \(a_n\) 与 \(\Delta^n a_0\) 一一对应。
设单位数列(基) \(e_n^{(m)}=\{x|\forall 1\le i\le n[i=m]\}\),所有数列都可以用 \(e\) 线性组合得到。
\(n^p=C_n^p+x_1C_n^{p-1}+x_2C_n^{p-2}+...+x_nC_n^1=\sum\limits_{i=0}^pS(p,i)A_n^i\)
其中系数 \(S(p,i)\) 为第二类 Stirling 数。
\(n^1=0A_1^0+1A_1^1\to S(1,0)=0,S(1,1)=1\),
\(n^2=0A_2^0+1A_2^1+(2/2)A_2^2\to S(2,0)=0,S(2,1)=1,S(2,2)=1\),
\(n^3=0A_3^0+1A_3^1+(6/2)A_3^2+1(6/6)A_3^3\to S(3,0)=0,S(3,1)=1,S(3,2)=3,S(3,3)=1\)
特别地,规定 \(S(0,0)=1\).
递推式:\(S(p,i)=S(p-1,i-1)+i\times S(p-1,i)(1\le i\le p-1)\).
组合意义:将 \(p\) 个不同元素划分成 \(i\) 个不计顺序的部分的方案数.
显然 \(S(p,1)=1\).
下证:\(S(p,i)=S(p-1,i-1)+i\times S(p-1,i)\).
这相当于现有 \(p\) 个元素,其中有一个元素 \(x\),则有两种划分:
- \(x\) 单独一组,则 \(p-1\) 个元素分成 \(i-1\) 组,\(S(p-1,i-1)\).
- \(x\) 在某一组里,则 \(p-1\) 个元素分成 \(i\) 组,此时 \(x\) 可以在任意一组内,\(i\times S(p-1,i)\).
证毕。
从另一方面看,这相当于把元素映射到组中去,是 \(p\) 元集 \(\mapsto\) \(i\) 元集的满射。
所以考虑容斥:
Bell 数:\(B_p\) 表示把 p 个元素分为若干个部分的方案数。
\(B_0=1,B_1=1,B_2=2,B_3=5\).
即 $$B_p=\sum_{i=0}{p-1}C_{p-1}iB_{p-i-1}$$
第一类 Stirling 数:表示满足 \(A_n^p=\sum(-1)^{p-i}s(p,i)n^i\) 的 \(s(p,i)\),即 \(A_n^p\) \(i\) 次项系数的绝对值.
递推式:\(s(p,i)=s(p-1,i-1)+(p-1)s(p-1,i)\).
组合意义:将 \(p\) 个元素划分成 \(i\) 个圆排列的方案数。
考虑 \(n+1\) 个元素中有一个元素 \(x\),则有两种划分:
- \(x\) 单独构成一个圆排列,则 \(p\) 个元素构成 \(i-1\) 个圆排列,\(s(p,i-1)\).
- \(x\) 在一个圆排列中,则 \(p\) 个元素构成 \(i\) 个圆排列,\(x\) 可以在任意一个圆排列中,\(p\times s(p,i)\).
数论
数论部分默认所有数为整数
定义 1.1 整除
\(a|b\) 指 \(\exists n \in \mathbb{Z}\) 使得 \(an=b\)
满足传递性: \(a|b,b|c\) 则 \(a|c\)
可加减性: \(n|a,n|b\) 则 \(n|a\pm b\)
可乘性: \(a|b,c|d\) 则 \(ac|bd\)
例题:证明 \(8|3^{2n+1}+5\)
$3^{2n+1}+5= 3^{2n+1} -3+8 =3(9^k-1)+5 = 3(9-1)(......)+5 $ 故成立
定义 2.1 最大公约数和最小公倍数
最大公约数 \(gcd(a,b)=\max\{x|a,x|b\}\)
最小公倍数 \(lcm(a,b)=\min\{a|x,b|x\}\)
引理:带余除法
对于任意\(a\) \(b\) 存在唯一 \(k\),\(r\) 使得 \(a=kb+r\) (\(0\le r<b\))
证明:
构造集合 \(S=\{x \in \mathbb{N}: x=a-k b, k \in \mathbb{Z}\}\)
可知该集合必有最小值,设其为 \(r\), \(0\le r=a-kb\)
存在性:设 \(r \ge b\),带入知 \(a-(k+1)b\ge 0\),另 \(r'=a-(k+1)b\)
由于 \(b>0\),\(r'<r\) 于假设 \(r\) 最小不符
故 \(0\le r <b\)
唯一性:
假设有两种表示
则 \(r_i-r_j=b(k_i-k_j)\),由于 \(r<b\),则合法解只有 \(r_i=r_j\) 情况,故写法唯一
求证: \(a,b\) 的 \(lcm|\) 其余公倍数
证:设 \(lcm\) 为 \(d\),其余任意一个公倍数为 \(c\)
假设 \(d\nmid c\),则设 \(c \mod d=r\),\(r=c-kd\),所以 \(r\) 也是公倍数且小于 \(lcm\) 与假设不符
求证:$gcd(a,b)=gcd(a-b,b) $
显然设任意公约数为 \(d\),\(d|a,d|b\) 所以 \(d|(a-b)\),故不影响结果
辗转相除法
$gcd(a,b)=gcd(b,a\bmod b) $
求证辗转相除法的正确性?由上一条,显然取余等效于多次的减法,故显然也正确
裴蜀定理
(\(abxy\) 均为非 \(0\) 整数, \(a,b\) 为定值),总存在 \(x,y\) 使得 \(ax+by=gcd(a,b)\),且设 \(k\) 为正整数,\(d\) 为 \(gcd(a,b)\) 则 \(ax+by=kd\),证明自行查阅此处不深入
由此可证,\(a,b\) 的任意公因数 \(c\) 整除其最大公约数 \(d\),因为 \(d=ax+by\) 其中 \(c|a,c|b\) 故 \(c|d\)
整除具有互质可消性,即 \(a|bc\),\(ab\) 互质则 \(a|c\) (互质指最大公约数为 \(1\))
证明:存在 \(x,y\) 使得 \(ax+by=1\)
所以 \(c=axc+byc\)
故 \(a|c\)
定义 3.1 质数
设 \(n\) 是质数若 \(n\) 只有 \(1\) 和 \(n\) 作为因子
以下用 \(p\) 来表示质数
反证可知无数个质数
引理3.2
\(p\) 和任意其余整数要么互质要么整除,由质数定义可知
引理3.3
若 \(p|ab\) 则 \(p|a\) 或 \(p|b\) ,由整除消去性可知
算数基本定理(唯一分解定理)
任意正整数 $n=\prod_{i=1}^{k} p_i ^ {z_i} $ (除了1)
称为标准分解式
文字描述就是说:一个大于一的正整数可以分解成若干质数的乘积,若忽视质因子顺序,则分解方式唯一
证明:
可分解:
数学归纳法, \(2\) 自己是质数肯定成立,设 \(2\to k\) 成立,则若 \(k+1\) 是质数自然满足,不是质数则可以分解出至少两个因数,两个因数可以分解,故可以分解
唯一性:
设两种分解方案 \(p,q\),设 \(n\) 是最小的有多种方案的数
两种方案都必有一个因子整除 \(n\),由于是质数所以这个因子是相等的,把 \(n\) 除以 这个因子得出一个更小的数,这个数依然有多种分解,与 \(n\) 的最小性违背,所以分解唯一
\(v_p(n)\) 表示 \(n\) 的标准式中因子 \(p\) 的指数
性质:$v_{p}(n_1,n_2) = v_{p} (n_{1}) +v_{p} (n_{2}) $, $v_p(gcd(n1,n2))= \min(v_p(n_1),v_p(n_2)) $
$v_p(lcm(n1,n2))= \max(v_p(n_1),v_p(n_2)) $
$v_p(n!)=\sum_{i=1}^{\infty} \left \lfloor \frac{n}{p^i} \right \rfloor $
\(v_p(C_n^m)=\sum_{i=1 \to \infty} \left \lfloor \frac{n}{p^i} \right \rfloor -\left \lfloor \frac{m}{p^i} \right \rfloor-\left \lfloor \frac{n-m}{p^i} \right \rfloor\)
这个式子的含义十分特别,它恰巧是 \(n+(n-m)\) 在 \(p\) 进制下的进位次数
因数相关推论
设 $n=\prod_{i=1}^{k} p_i ^ {z_i} $
(1)设 $m=\prod_{i=1}^{k} p_i ^ {f_i} $,则 \(m|n\) 等效于 \(f_i\le z_i(1 \le i \le k)\)
(2)因数个数公式 $$\tau(n) =\prod_{i=1}^k (z_i+1) $$
(3)因数和公式 $$\sigma(n) = \prod_{i=1}^k \frac{p_{i}^{z_{i+1}}-1}{p_i-1} $$
(4)因数积公式:$$n^{\frac{\tau(n)}{2}}$$
例题:
(1) \(p\) 为质数,\(x、y\) 是正整数,解方程 \(p^x=y^3+1\)
\(y^3+1=(y+1)(y^2-y+1)\) 特判其中一个是一解得 \(y=1,p=2,x=1\)
\(gcd(y+1,y^2-y+1)=gcd(y+1,3)\) (辗转相除法)
故 \(p=3\),解得 \(x=3,y=3\)
定理 3.4
设 \(n、m\) 唯一分解式为 $n=\prod_{i=1}^{k} p_i ^ {f_i} ,m=\prod_{i=1}^{k} p_i ^ {g_i} $
\(gcd(n,m)= \prod_{i=1}^{k} p_i ^ {\min(f_i,g_i)}\)
\(lcm(n,m)= \prod_{i=1}^{k} p_i ^ {\max(f_i,g_i)}\)
推论 3.5
以下用\(()\)表示\(gcd\)
(1) \((ma,mb)=m(a,b)\),证明略
(2) $(a,uv)=(a,(a,u)v) $,证明 $(a,(a,u)v)=((a,av),uv)=(a,uv) $
(3) $(u,v)=1 \Rightarrow (a,uv) = (a,u)(a,v) $ ,证明参考分解,\(u,v\) 无公因数所以分开计算不影响结果
(4) $(a,b)=(c,d)=1 \Rightarrow (ab,cd)=(a,c)(a,d)(b,c)(b,d) $,就是推广的 (3)
(5) $(a,b)=1 \Rightarrow (a^k ,b^k)=1 $
(6) $gcd(a,b)\times lcm(a,b)=ab $,证明参考唯一分解,因此上述最大公约数的性质对最小公倍数成立
定义 4.1 同余
$n|a-b \Rightarrow a \equiv b(\bmod n) $
性质:(以下省略 (\(\bmod n\)))
-
1 \(a \equiv b\) 则对 \(n\) 作带余除法余数一致
-
2 自反性 \(a \equiv b \Rightarrow b \equiv a\)
-
3 传递性 \(a \equiv b,b \equiv c\)则 \(a \equiv c\)
-
4 可加减性 $a_1 \equiv a_2 ,b_1 \equiv b_2 \Rightarrow a_1 \pm b_1 \equiv a_2\pm b_2 $
-
5 可乘性 $a_1 \equiv a_2 ,b_1 \equiv b_2 \Rightarrow a_1 \times b_1 \equiv a_2\times b_2 $
-
6 可除性 $ka \equiv kb (\bmod kn)\Rightarrow a\equiv b(\bmod n) $
这条尤为注意,除不是任意可用的,限制更为严格
- 7 互质可除性 \(ka\equiv kb,gcd(k,n)=1 \Rightarrow a\equiv b\)
几个特殊数的余数特征:
一个数 \(\bmod 10^k\) 就是末 \(k\) 位数
一个数 \(n\) 和其各位的和在 \(\bmod 10^k-1\) 同余,与其(从高往低)第一位减第二位加第三位....
定义 5.1 类系相关
-
1 剩余类 定义:\(Z_n=\{\overline{0},\overline{1}...\overline{n-1}\}\) ,其中 \(\overline{i}\) 意思是在模 \(n\) 意义下和 \(i\) 同余的数组成的集合,可以三则运算 \(+-\times\),这样的集合就是剩余系,\(Z_n\) 里装了 \(\bmod n\) 下所有剩余系
-
2 完全剩余系 从 \(Z_n\) 的每个剩余系中选出一个数组成的集合叫做模 \(n\) 意义下完全剩余系,一个完系里的数同时加一个数或乘一个与 \(n\) 互质的数仍是完系
-
3 欧拉函数 \(\varphi\) \(\varphi(n)\) 定义为比 \(n\) 小的数中和 \(n\) 互质的数的数量,是一个积性函数,当 $gcd(n,m)=1,\varphi(nm)=\varphi(n)\varphi(m) $
-
4 欧拉函数计算:见上方容斥原理部分
欧拉函数是一个积性函数,即当 \(gcd(n,m)=1\) 时 $\varphi(n)\varphi(m)=\varphi(nm) $
证明:唯一分解后若互质则分解后结果无交,显然成立
-
5 既约剩余系 一个数全部和 \(n\) 互质的完全剩余系称为一个既约剩余系也叫缩系,缩系里的数同乘一个和 \(n\) 互质的数还是缩系,全部变为原本的同余逆元也是缩系
-
6 同余逆 已知 \(gcd(a,n)=1\) 则存在 \(b\) 使得 \(ab \equiv 1(\bmod n)\) 则称 \(b\) 是 \(a\) 模 \(n\) 的逆元,记作 \(a^{-1}\) ,这样的 \(b\) 在 $\bmod n $ 后是唯一的
存在性证明:
可以用裴蜀定理,但是给出另一种证明
\(\{0,1,2,3,4...n-1 \}\) 是完系又由于互质 同乘 \(a\) 还是完系 所以必定存在唯一的数满足条件
从上述描述我们发现对于质数 \(p\), \(Z_p\) 关于四则运算封闭,是一个数域,有着更加良好的性质
中国剩余定理
已知 \(n_1、n_2、...n_k\) 两两互质,同余方程组
在模 \(n_1 n_2 n_3...n_k\) 意义下有唯一解
(ps:若不互质可以拆模数变成互质情况,出现冲突则无解)
设 $M_i=\frac{n_1 n_2 n_3..n_k}{n_i} $
解为 \(x \equiv \sum_{i=1}^k a_i M_i M_i^{-1}\) ,其中的逆元是 \(\bmod\) 对应的 \(n_i\) 的逆
威尔逊定理(Wilson)
若 \(p\) 为质数,则 \((p-1)! \equiv -1 \pmod p\)
费马小定理
\(p\) 为质数且 \(a\) 不是 \(p\) 的倍数则 \(a^{p-1}\equiv 1 \pmod p\)
这个定理是欧拉定理的特殊情况
欧拉定理
\(a、n\) 正整数,且 \(gcd(a,n)=1\) 则 \(a^{\varphi(n)}\equiv 1 \pmod n\)
群论
定义 1
对于一个非空集合 \(G\) 和某操作 \(*\), \((G,*)\) 称为一个群,其中 \(*\) 是任意一个二元运算 , \(G\) 有限称为有限群
性质:
-
存在单位元 \(e\) 使得 \(\forall g \in G\) 使得 \(g*e=e*g=g\)
-
\(\forall g \in G\) , $\exists g' \in G $ 使得 \(g*g'=g'*g=e\), \(g\) 和 \(g'\) 互为逆元记作 \(g^{-1}\)
-
\(\forall g_1,g_2,g_3\),满足 \(g_1*(g_2*g_3)=(g_1*g_2)*g_3\),也就是说群有结合律,但注意 不一定有交换律
-
群内元素运算后仍在群内
单位元是惟一的,因为设存在两个,则这俩运算分别等于其中一个故两个相等
如果 \(a*b=b*a\) 则称为一个交换群或阿贝尔群
一个群的阶就是其集合的元素个数
如果 $\exists H\subseteq G $ 并且 \((H,*)\) 也是群则称 \(H\) 是 \(G\) 的子群
任意群都有 \((e,*)\) 和 \((G,*)\) ,这两个称为平凡子群
定义一个置换是一个从排列 \(1\to n\) 向排列 \(p\) 的映射
意思是 把 \(a_i\) 映射到 \(a_{pi}\)
置换支持乘法,两个置换 \(f,g\) 相乘就是先进行 \(f\) 映射再进行 \(g\) 映射
在置换群的作用下,元素存在等价关系。等价关系即满足自反性、对称性、传递性。满足等价关系的元素处于同一个等价类中
置换群的子群同样是一个置换群
循环群:指一个群 \((G,*)\) ,其中 \(G=\{a^m |m\in \mathbb{Z}\}\) 称为一个由 \(a\) 生成的循环群
若运算是乘法,循环群显然是交换群
假设群 \((G, \circ)\) 和群 \((H, \cdot)\) 之间存在双射 \(f: G \rightarrow H\) ,使得 \(f(a)=A\) 和 \(f(b)=B\) ,如果这两个群是同构的,那么 \(a \circ b\) 应对应 \(A \cdot B\) ,即 \(f(a \circ b)=A \cdot B=f(a) \cdot f(b)\) . 该条件必须对 G 中所有的元素 a 和 b 都成立,以上是同构的含义
一个元素在群中的阶就是说最小的 \(k\) 使得 \(g^k=e\) ,\(k\) 就是元素 \(g\) 的阶记作 \(o(g)\)
拉格朗日定理
如果 \(H\) 是 \(G\) 的子群,则 \(|H| \mid |G|\),中间的杠是整除
原根
首先定义阶是满足同余式 \(a^n \equiv 1 \pmod m\) 的最小的正整数 \(n\) 称作 \(a\) 的阶,也可以说是摸 \(m\) 意义下缩系的乘法群中元素 \(a\) 的阶
记作 \(\delta_m (n)\)
性质:
-
\(a、a^2、a^3....a^{\delta_m (a)}\)
-
若 \(a^n\equiv 1 \pmod m\) 则 \(\delta_m (a)|n\)
-
若 \(gcd(a,m)=gcd(b,m)=1\) 则 $\delta_m(ab)=\delta_m(a) \delta_m(b) $ 的充要条件是 \(gcd(\delta_m(a),\delta_m(b))\)
-
\(\delta_{m}\left(a^{k}\right)=\frac{\delta_{m}(a)}{\left(\delta_{m}(a), k\right)}\)
原根定义: 若 $gcd(g,m)=1 $ 且 $\delta_m(g)=\varphi(m) $ 则称 \(g\) 是模 \(m\) 下的原根
性质:\(g^i \bmod m\) (\(0\lt i \lt m\)) 的结果互不相同
\(g\) 是原根的充要条件是 对于每个 \(\varphi(m)\) 的素因子 \(p\) 都有 \(g^{\frac{\varphi(m)}{p}}\not \equiv 1 \pmod m\)
若 \(m\) 有原根,则个数为 \(\varphi(\varphi(m))\) 个
原根存在定理: \(m\) 存在原根当且仅当 \(m=2、4、p^k、2p^k\) 其中\(p\) 为奇素数
循环置换:一类特殊的置换,形如
若两个循环置换无重复元素称这两个循环置换不相交
任何一个置换可以由若干不相交的循环置换乘积
Burnside 引理
设 \(A、B\) 是有限集,\(X\) 为一些 \(A\to B\) 的映射组成集合, \(G\) 是 \(A\) 上的置换群,且 \(X\)中的映射在 \(G\) 的置换作用下封闭
\(X/G\) 表示 \(G\) 作用在 \(X\) 产生的所有等价类集合(若两个映射置换后相等则在同一个等价类中)
则 \(|X/G|=\frac{1}{|G|}\sum_{g\in G} |X^g|\) 其中 \(X^g=\{x|x\in X,g(x)=x\}\) 也就是在 \(g\) 作用下的不动点集合
例题: \(6\) 颗珠子三种颜色各两个穿成珠子方案数:
可以写出置换群,共十二种
则答案等于 \(\frac{1}{12}(90+A_3^3+3A_3^3+3A_3^3)=11\)
Pólya 定理
在与 Burnside 引理相同的前置条件下若把 \(X\) 改为 所有 \(A\to B\) 的映射则内容可修改为
\(|X/G|=\frac{1}{|G|}\sum_{g\in G} |B|^{c(g)}\)
其中 \(c(g)\) 表示把 \(g\) 拆成不相交的循环置换的方案数,其实就是 burnside 引理
到这里为止,内容都是 (2023)8.7~8.12 HNFHS上课的内容,下面就是杂谈
拓展欧几里得算法
我们上面有提到裴蜀定理,但很遗憾那个定理没有给出求解的方式
omg怎么办
我们考虑这么一件事就是说:
$ax+by=gcd(a,b)=gcd(b,a\bmod b) $
那么我们发现也可找出一个式子 \(bx'+(a\bmod b)y'=bx'+(a-b\lfloor \frac{a}{b}\rfloor)y'=gcd(b,a\bmod b)\)
拆掉括号重新加,我们可以得到 \(ay'+b(x'-\lfloor \frac{a}{b}\rfloor y')=gcd(a,b)\)
所以 \(x=y',y=x'-\lfloor \frac{a}{b}\rfloor y'\)
于是我们可以递归的解决问题
void exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1,y=0;return;
}
exgcd(b,a%b,x,y);
int z=x;
x=y,y=z-y*(a/b);
}
一种最常见的应用就是求逆元,设模数为 \(z\) 则方程 \(ax+zy=1\) 的解正是模 \(z\) 意义下 \(a^{-1}\)
拓展中国剩余定理
为什么会有这个东西?因为中国剩余定理定理要求模数互质
那怎么办?还能求解吗
EXCRT 由此诞生
改写同余方程可得 \(x=k_1 a_1 +m_1=k_2 a_2 =m_2\)
即 $a_1 k_1−a_2 k_2=m_2−m_1 $
这个不定方程有解当且仅当 \(gcd(a_1,a_2) | m_2-m_1\)
由此
于是对于任意方程组我们就可以不停合并从而解决
整除/数论分块
首先给出两个小推论(没啥用):
\(\sum_{i=1}^n k\bmod i\)
看到这个取余就知道应该要转成 \(k-i\lfloor \frac{k}{i} \rfloor\)
我们先忽略那个系数 \(i\),那么现在的问题就是对 \(\lfloor \frac{k}{i} \rfloor\) 求和
这个取整符号可以大作文章,观察后我们可以发现它的取值大约只有 \(\sqrt n\) 种并且是连续的一段一段的
等会,一段一段
考虑分块,但是怎么确定左右边界?
十分显然的是第一个块肯定是 \([1,1]\) ,那么其实只需要考虑右端点因为左端点就是上一个右端点 \(+1\)
我们简单推一下?
结论:右端点就是 \(k/(k/i)\)
long long calc(long long n){
long long ans=0,l=1,r;
while(l<=n){
r=n/(n/l);//得到右端点
ans=(ans+(r-l+1)*(n/l))%mod;//统计块内答案
l=r+1;//前往下一块
}
return ans;
}
再考虑一个一般一点的问题
假设求和的是 \(f(i) \lfloor \frac{k}{i} \rfloor\),如果你一块一块展开你会发现块内答案就是 \(f(l\to r 的和) \times 正常块内答案\)
那这个题非常简单就可以处理了,代码不给出
为啥讲数论分块啊?
为了下面的重量级——
但是在此之前还得补充一点点小内容
艾弗森括号
\(P\) 是一个命题,若为真 \([P]=1\) 为假 \([P]=0\)
积性函数
假设数论函数 \(f\) 满足当 \(gcd(a,b)=1,f(a)f(b)=f(ab)\) 则称其为一个 积性函数
若对于任意 \(a,b\) 都成立则称为 完全积性函数
狄利克雷卷积
称 \(h(x)=\sum_{d|x}f(x)g(\frac{x}{d})\)
则 \(h(x)=f(x)*g(x)\) 为其狄利克雷卷积,仍是一个函数
显然的,若干积性函数的运算和狄利克雷卷积还是积性函数
狄利克雷卷积存在单位元,就是单位函数 $e(n)=[n=1] $
同时也存在逆元
狄利克雷卷积满足结合交换和与加法的分配律
莫比乌斯函数
\(\mu\) 是一个积性函数
性质: \(\sum_{d|n} \mu(d)=[n=1]=e(n)\)
可以看出: \([gcd(i,j)=1]=\sum_{d|gcd(i,j)} \mu(d)\)
杜教筛
我们希望有一个科技可以快速的计算一个积性函数的前缀和
于是我们比较 naive
的开始推式子
假设 \(f(x)\) 是一个积性函数
设 \(S(n)=\sum_{i=1}^n f(i)\)
我们希望快速求,最起码比 \(O(n)\) 快
构造积性函数 \(h,g\) 使得 \(h=f*g\)
那么 $$\sum\limits _{i=1}^n h(i)=\sum\limits _{i=1}^n \sum\limits _{d|i} f(i/d)g(d)\ $$
由于我们只想要求 \(S(n)\)
于是我们可以提出来
由于积性函数第一项一定是 \(1\) (考虑 \(f(1)=f(1)f(1)\)) 所以这个式子下面的 \(g(1)\) 可以去掉也就是说
可以注意到最后面可以数论分块做掉从而优化
实现上我们通常考虑递归+记忆化
你说这太抽象了,举个例子?
彳亍,现在求 \(\mu\) 和 \(\varphi\) 前缀和
(下文 \(I\) 指的是函数 \(1(n)=1\))
- \(\mu\)
\(\mu*I=e\),这三玩意也都是积性函数
于是取 \(f=\mu,g=I,h=e\) 注意这里可能有很多种取法,但是一定要保证可以快速算出 \(g,h\) 前缀和
代码等会一起放
- \(\varphi\)
取 \(f=\varphi,g=I,h=id\) (\(id_k(n)=n^k\) 是一个积性函数,不写默认 \(1\))
同时,所有积性函数都可以线性筛,见下方代码:
#include<bits/stdc++.h>
using namespace std;
const int N=6e6+5;
typedef unsigned int ui;
typedef long long ll;
//#define int long long
ll T,n;
bool isp[N];
ll pr[N],prn;
ll phi[N],mu[N];
void init(int x){// 预处理1~n的值,查表加速计算
phi[1]=mu[1]=1;
for(int i=2;i<=x;i++){
//cout<<i<<"\n";
if(!isp[i]){
pr[++prn]=i;
phi[i]=i-1;
mu[i]=-1;
}
for(int j=1;j<=prn and i*pr[j]<=x;j++){
int t=i*pr[j];
isp[t]=1;
if(i%pr[j]){
phi[t]=phi[i]*(pr[j]-1);
mu[t]=-mu[i];
}
else{
phi[t]=phi[i]*pr[j];
mu[t]=0;
break;
}
}
}
for(int i=1;i<=x;i++){
phi[i]+=phi[i-1],mu[i]+=mu[i-1];
}
}
unordered_map<int,ll> P,M;
ll calphi(ll x){
if(x<=N-5) return phi[x];
if(P.find(x)!=P.end()){
return P[x];
}
ll ans=0;
for(ui l=2,r;l<=x;l=r+1){
r=x/(x/l);
ans+=(r-l+1)*calphi(x/l);
}
return P[x]=x*(x+1)/2-ans;
}
ll calmu(ll x){
if(x<=N-5) return mu[x];
if(M.find(x)!=M.end()){
return M[x];
}
ll ans=0;
for(ui l=2,r;l<=x;l=r+1){
r=x/(x/l);
ans+=(r-l+1)*calmu(x/l);
}
return M[x]=1-ans;
}
signed main(){
cin>>T;
init(N-5);
while(T--){
cin>>n;
cout<<calphi(n)<<" "<<calmu(n)<<endl;
}
}
一个有趣的现象是,如果你直接暴力杜教筛,复杂度并不优秀,是 \(O(n^{\frac{3}{4}})\)
但是如果你线性预处理出接近 \(n^{\frac{2}{3}}\) 的值,再跑,复杂度近似可以视作 \(O(n^{\frac{2}{3}})\)
莫比乌斯变换/反演
这位是重量级.
后面函数默认是数论函数
后续在狄利克雷卷积出现的 \(1\) 是恒等函数 \(1(n)=1\)
考虑 \(\mu*1=e\),可以知道 \(f=f*e=f*u*1=(f*1)*\mu\)
形式一
若有 \(f(n)=\sum_{d|n} g(d)\)
那么有 \(g(n)=\sum_{d|n}f(\frac{n}{d})\mu(d)\)
在这种形式下,称 \(f\) 是 \(g\) 的莫比乌斯变换,\(g\) 称为 \(f\) 的莫比乌斯反演,简称莫反
形式二
若有 \(f(n)=\sum_{n|d} g(d)\)
则有 \(g(n)=\sum_{n|d}\mu(\frac{d}{n})f(n)\)
常见反演形式:
(默认 \(n\le m\))
形式一
数论分块搞一下,线性预处理根号查询
形式二
复杂度同上
形式三
其中 \(T=dk\)
二项式反演
我们之前表示补集的符号很复杂
那么在全集固定的情况下可以直接写 \(\overline{S}\)
根据高中必修(啊?)
我们可知道:
这两个式子和二项式反演的容斥解释息息相关
等等,我们提了一嘴莫反,又要讲二反
反演是什么?
演绎推理是我们在数学中经常遇到的一些方法。对于数列来说,通过原数列计算出新的数列叫作演绎,而通过计算出的数列反推出原数列则被称为反演
不够人话?就是说
已知 \(f\) 求 \(g\) 是演绎,反之是推理
不妨假设容斥式子:
即 \(f(x)\) 是任意 \(x\) 个集合补集的交集,\(g(x)\) 为任意 \(x\) 的交集
依据前面某很重要式子我们可以发现
简单恒等变换(我不会,来教教我) 可以得出一个更实用的形式: