【重学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)范德蒙德卷积

\[\sum_{i=0}^{k}\left(\begin{array}{l} n \\ i \end{array}\right)\left(\begin{array}{c} m \\ k-i \end{array}\right)=\left(\begin{array}{c} n+m \\ k \end{array}\right) \]

证明可以参考用其组合意义:

在一个大小为 \(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\)

\[S_n= \begin{array}{r} \left\{ \begin{matrix} \frac{a_1(1-q^n)}{1-q}\ \ (q\neq 1)\\ na_1 \ \ (q=1) \end{matrix}\right. \end{array} \]

关于求和符号 \(\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恒等式

\[\begin{array}{} \text { 设 } S_{n}=\sum_{i=1}^{n} a_{i}\text { 则有 } \\ \sum_{k=1}^{n} a_{k} b_{k}=S_{n} b_{n}+\sum_{k=1}^{n-1} S_{k}\left(b_{k}-b_{k+1}\right) \end{array} \]

例题: $\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\) 上显然成立

\[若 n=m 时成立 \begin{array}{} \therefore n=k-1 \text { 时, } \\ \frac{\sum_{i=1}^{m-1} a_{i}}{m-1}=\frac{\sum_{i=1}^{m-1} a_{i}+\frac{\sum_{i=1}^{m-1} a_{i}}{m-1}}{m}>=\sqrt[m]{\sum_{i=1}^{m-1} a_{i}+\frac{\sum_{i=1}^{m-1} a_{i}}{m-1}}=\left(\sum_{i=1}^{m-1} a_{i}\right)^{\frac{1}{m}} \times\left(\frac{\sum_{i=1}^{m-1} a_{i}}{m-1}\right)^{\frac{1}{m}} \\ \therefore\left(\frac{\sum_{i=1}^{m-1} a_{i}}{m-1}\right)^{1}>=\left(\sum_{i=1}^{m-1} a_{i}\right)^{\frac{1}{m}} \times\left(\frac{\sum_{i=1}^{m-1} a_{i}}{m-1}\right)^{\frac{1}{m}} \\ \therefore\left(\frac{\sum_{i=1}^{m-1} a_{i}}{m-1}\right)^{\frac{m-1}{m}}>=\left(\sum_{i=1}^{m-1} a_{i}\right)^{\frac{1}{m}} \\ \therefore \frac{\sum_{i=1}^{m-1} a_{i}}{m-1}>=\left(\sum_{i=1}^{m-1} a_{i}\right)^{\frac{1}{m-1}} \\ \therefore \frac{\sum_{i=1}^{m-1} a_{i}}{m-1}>=\sqrt[m-1]{\left(\sum_{i=1}^{m-1} a_{i}\right)} \end{array} \]

递推太典了,基本上就是 \(DP\)

错排问题除了容斥解还有递推解

博弈论(不完全)

无平局无运气的游戏有必胜策略。

\(n\) 颗糖,A,B 轮流取 \(2^k\) 个,取完最后一个的获胜。

第一制胜点:0
递推:

  1. 只能到制胜点的都必败;
  2. 可以走到必败点才是制胜点。

猜:

\(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=\sum_{i=1}^{n-1}C_iC_{n-i} \]

通项:

\[C_n=\binom{2n}{n}-\binom{2n}{n−1}=\frac{\binom{2n}{n}}{n+1} \]

\(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\).

\[\begin{array}{c|c|c|c|c|c|c} S(p,i) & 0 &1&2&3&4&5\\ \hline 0 & 1 \\ \hline 1 & 0&1 \\ \hline 2 & 0&1&1 \\ \hline 3 & 0&1&3&1 \\ \hline 4 & 0&1&7&6&1 \\ \hline 5 & 0&1&15&25&10&1 \\ \end{array} \]

递推式:\(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\),则有两种划分:

  1. \(x\) 单独一组,则 \(p-1\) 个元素分成 \(i-1\) 组,\(S(p-1,i-1)\).
  2. \(x\) 在某一组里,则 \(p-1\) 个元素分成 \(i\) 组,此时 \(x\) 可以在任意一组内,\(i\times S(p-1,i)\).
    证毕。

从另一方面看,这相当于把元素映射到组中去,是 \(p\) 元集 \(\mapsto\) \(i\) 元集的满射。
所以考虑容斥:

\[\begin{aligned}S(p,i)&=i^p-C_p^1(i-1)^p+C_p^2(i-2)^p-...\\&=\frac{1}{i!}\left(\sum_{k=0}^i(-1)^kC_p^k(1-k)^p\right)\end{aligned} \]

Bell 数\(B_p\) 表示把 p 个元素分为若干个部分的方案数。

\[B_p=\sum_{i=0}^pS(p,i) \]

\(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)\).

\[\begin{array}{c|c|c|c|c|c|c} s(p,i)\\ p\ i& 0 &1&2&3&4&5&6\\ \hline 0 & 0&1 \\ \hline 1 & 0&1&1 \\ \hline 2 & 0&2&3&1 \\ \hline 3 & 0&6&11&6&1 \\ \hline 4 & 0&24&50&35&10&1 \\ \hline 5 & 0&120&274&225&85&15&1 \\ \end{array} \]

组合意义:将 \(p\) 个元素划分成 \(i\) 个圆排列的方案数。
考虑 \(n+1\) 个元素中有一个元素 \(x\),则有两种划分:

  1. \(x\) 单独构成一个圆排列,则 \(p\) 个元素构成 \(i-1\) 个圆排列,\(s(p,i-1)\).
  2. \(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\)

唯一性:

假设有两种表示

\[\left\{\begin{array}{} a=r_{i}+k_{i} b \\ a=r_{j}+k_{j} b \end{array}\right. \]

\(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_1+n_2) \left\{\begin{matrix} =\min(v_p(n1),v_p(n_2)) \ \ (v_p(n1) \neq v_p(n_2)) \\ \ge v_p(n_1) \ \ (v_p(n1) = v_p(n_2)) \end{matrix}\right. \]

$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\) 两两互质,同余方程组

\[\left\{\begin{matrix} x \equiv a_1(\bmod n_1) \\ x \equiv a_2(\bmod n_2) \\ .....\\ x \equiv a_k(\bmod n_k) \end{matrix}\right. \]

在模 \(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\) 的映射

\[\begin{Bmatrix} a_1\ a_2...a_n\\ a_{p1}\ a_{p2}...a_{pn} \end{Bmatrix} \]

意思是 把 \(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\) 为奇素数

循环置换:一类特殊的置换,形如

\[\left(a_{1}, a_{2}, \ldots, a_{m}\right)=\left(\begin{array}{c} a_{1}, a_{2}, \ldots, a_{m-1}, a_{m} \\ a_{2}, a_{3}, \ldots, a_{m}, a_{1} \end{array}\right) \]

若两个循环置换无重复元素称这两个循环置换不相交

任何一个置换可以由若干不相交的循环置换乘积

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

由此

\[\begin{matrix} 这样,我们就有了: \frac{a_{1} k_{1}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)}=\frac{m_{2}-m_{1}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)}+\frac{a_{2} k_{2}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)} .\\ 它也可以表示为下式:\\ \frac{a_{1} k_{1}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)} \equiv \frac{m_{1}-m_{2}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)} \quad\left(\bmod \frac{a_{2}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)}\right) .\\ 我们设 \left(\frac{a_{1}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)}\right)^{-1} \equiv K \quad\left(\bmod \frac{a_{2}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)}\right) ,则上式可转化为:\\ k_{1} \equiv K \frac{m_{1}-m_{2}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)} \quad\left(\bmod \frac{a_{2}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)}\right) \text {. }\\ 即:\\ k_{1}=K \frac{m_{1}-m_{2}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)}+p \frac{a_{2}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)} .\\ 由 x=k_{1} a_{1}+m_{1} ,得:\\ x_{1}=K \frac{m_{1}-m_{2}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)}+K p \frac{a_{1} a_{2}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)}+m_{1} .\\ 注意到 \frac{a_{1} a_{2}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)}=\operatorname{lcm}\left(a_{1}, a_{2}\right) ,上式写成同余式即:\\ x \equiv K \frac{m_{1}-m_{2}}{\operatorname{gcd}\left(a_{1}, a_{2}\right)}+m_{1} \quad\left(\bmod \operatorname{lcm}\left(a_{1}, a_{2}\right)\right)\\ \end{matrix} \]

于是对于任意方程组我们就可以不停合并从而解决

整除/数论分块

首先给出两个小推论(没啥用):

\[\forall a,b,c\in \mathbb{Z},\lfloor\dfrac{a}{bc}\rfloor=\lfloor \dfrac{\lfloor\dfrac{a}{b}\rfloor}{c}\rfloor \]

\[ \forall n \in N_{+},\left|\left\{\left\lfloor\frac{n}{d}\right\rfloor \mid d \in N_{+}, d<=n\right\}\right|<=\lfloor 2 \sqrt{n}\rfloor |V| 表示集合 V 的元素个数。 \]

余数求和

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

我们简单推一下?

\[\begin{matrix} 必要性: \\ \left\lfloor\frac{N}{i^{\prime}}\right\rfloor 与 \left\lfloor\frac{N}{i}\right\rfloor 相等, 也就是 \left\lfloor\frac{N}{i^{\prime}}\right\rfloor \geq\left\lfloor\frac{N}{i}\right\rfloor (废话), 得到\\ \frac{N}{i^{\prime}} \geq\left\lfloor\frac{N}{i}\right\rfloor 两边取倒数, 不等号变向 \frac{i^{\prime}}{N} \leq 1 /\left(\left\lfloor\frac{N}{i}\right\rfloor\right) \\ 两边同乘 N , 得到 i^{\prime} \leq N /\left(\left\lfloor\frac{N}{i}\right\rfloor\right) \\ 也就是 i^{\prime} \leq\left\lfloor\frac{N}{\left\lfloor\frac{N}{i}\right\rfloor}\right\rfloor\\ 充分性:令 i^{\prime}=\left\lfloor\frac{N}{\left\lfloor\frac{N}{i}\right\rfloor}\right\rfloor 得到 \left\lfloor\frac{N}{i^{\prime}}\right\rfloor=\left\lfloor\frac{N}{\left.\left\lfloor\frac{N} {\left\lfloor\frac{N}{i}\right\rfloor}\right\rfloor\right\rfloor}\right\rfloor=\left\lfloor\frac{N}{i}\right\rfloor \\ \end{matrix} \]

结论:右端点就是 \(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(n)=\left\{\begin{matrix} 1 & n=1\\ 0 & n\text { 含有平方因子 }\\ (-1)^k & \text{其中} k \text{为} n \text{的本质不同的质因子数} \end{matrix}\right. \]

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

\[=\sum\limits _{d=1}^n g(d)\sum\limits _{i=1}^{\lfloor \frac{n}{d}\rfloor}f(i) \]

\[=\sum\limits _{d=1}^n g(d)S(\lfloor \frac{n}{d}\rfloor) \]

由于我们只想要求 \(S(n)\)

于是我们可以提出来

\[S(n)=\dfrac{\sum_{i=1}^{n}h(i)-\sum_{d=2}^n g(d)S(\lfloor\frac{n}{d}\rfloor)}{g(1)} \]

由于积性函数第一项一定是 \(1\) (考虑 \(f(1)=f(1)f(1)\)) 所以这个式子下面的 \(g(1)\) 可以去掉也就是说

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

可以注意到最后面可以数论分块做掉从而优化

实现上我们通常考虑递归+记忆化

你说这太抽象了,举个例子?

彳亍,现在求 \(\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\))

形式一

\[\begin{aligned} \sum\limits_{i=1}^{n} \sum\limits_{j=1}^m [gcd(i,j)=1]\\ =\sum\limits_{i=1}^{n} \sum\limits_{j=1}^m\sum\limits_{x|i}\sum\limits_{x|j} \mu(x)\\ =\sum\limits_{x=1}^n\sum\limits_{i=1}^{n} \sum\limits_{j=1}^m [x|i][x|j]\mu(x)\\ =\sum\limits_{x=1}^n \mu(x)\lfloor\dfrac{n}{x} \rfloor \lfloor\dfrac{m}{x} \rfloor \end{aligned} \]

数论分块搞一下,线性预处理根号查询

形式二

\[\begin{aligned} \sum\limits_{i=1}^{n} \sum\limits_{j=1}^m gcd(i,j)\\ =\sum\limits_{i=1}^{n} \sum\limits_{j=1}^m\sum\limits_{x|i}\sum\limits_{x|j} \varphi(x)\\ =\sum\limits_{x=1}^n\sum\limits_{i=1}^{n} \sum\limits_{j=1}^m [x|i][x|j]\varphi(x)\\ =\sum\limits_{x=1}^n \varphi(x)\lfloor\dfrac{n}{x} \rfloor \lfloor\dfrac{m}{x} \rfloor \end{aligned} \]

复杂度同上

形式三

\[\begin{aligned} & \sum_{i=1}^{n} \sum_{j=1}^{m} f(gcd(i, j)) \\ = & \sum_{d=1}^{n} f(d) \sum_{i=1}^{n} \sum_{j=1}^{m}[gcd(i, j)=d] \\ = & \sum_{d=1}^{n} f(d) \sum_{i=1}^{\left\lfloor\frac{n}{d}\right\rfloor} \sum_{j=1}^{\left\lfloor\frac{m}{d}\right\rfloor}[\operatorname{gcd}(i, j)=1] \\ = & \sum_{d=1}^{n} f(d) \sum_{k=1}^{\left\lfloor\frac{n}{d}\right\rfloor} \mu(k)\left\lfloor\frac{n}{d k}\right\rfloor\left\lfloor\frac{m}{d k}\right\rfloor \\ = & \sum_{T=1}^{n}\left\lfloor\frac{n}{T}\right\rfloor\left\lfloor\frac{m}{T}\right\rfloor \sum_{d \mid T} f(d) \mu\left(\frac{T}{d}\right) \end{aligned} \]

其中 \(T=dk\)

二项式反演

我们之前表示补集的符号很复杂

那么在全集固定的情况下可以直接写 \(\overline{S}\)

根据高中必修(啊?)

我们可知道:

\[\begin{array}{l} |U|-\left|\bigcap_{i=1}^{n} \overline{S_{i}}\right|=\left|\bigcup_{i=1}^{n} S_{i}\right|\\ |U|-\left|\bigcup_{i=1}^{n} \overline{S_{i}}\right|=\left|\bigcap_{i=1}^{n} S_{i}\right| \end{array} \]

这两个式子和二项式反演的容斥解释息息相关

等等,我们提了一嘴莫反,又要讲二反

反演是什么?

演绎推理是我们在数学中经常遇到的一些方法。对于数列来说,通过原数列计算出新的数列叫作演绎,而通过计算出的数列反推出原数列则被称为反演

不够人话?就是说

\[g(x)= \sum_i a_i f(i) \]

已知 \(f\)\(g\) 是演绎,反之是推理

不妨假设容斥式子:

\[\begin{array}{l} \left|S_{1} \cap S_{2} \cap \ldots \cap S_{n-1} \cap S_{n}\right|=|U|-\left|\overline{S_{1}}\right|-\left|\overline{S_{2}}\right|-\ldots+(-1)^{n} \times\left|\overline{S_{1}} \cap \overline{S_{2}} \cap \ldots \cap \overline{S_{n-1}} \cap \overline{S_{n}}\right|=\sum_{i=0}^{n}(-1)^{i}\left(\begin{array}{c} n \\ i \end{array}\right) f(i) \\ \left|\overline{S_{1}} \cap \overline{S_{2}} \cap \ldots \cap \overline{S_{n-1}} \cap \overline{S_{n}}\right|=|U|-\left|S_{1}\right|-\left|S_{2}\right|-\ldots+(-1)^{n} \times\left|S_{1} \cap S_{2} \cap \ldots \cap S_{n-1} \cap S_{n}\right|=\sum_{i=0}^{n}(-1)^{i}\left(\begin{array}{c} n \\ i \end{array}\right) g(i) \end{array} \]

\(f(x)\) 是任意 \(x\) 个集合补集的交集,\(g(x)\) 为任意 \(x\) 的交集

依据前面某很重要式子我们可以发现

\[ g(n)=\sum_{i=0}^{n}(-1)^{i}\left(\begin{array}{c} n \\ i \end{array}\right) f(i) \Longleftrightarrow f(n)=\sum_{i=0}^{n}(-1)^{i}\left(\begin{array}{c} n \\ i \end{array}\right) g(i) \]

简单恒等变换(我不会,来教教我) 可以得出一个更实用的形式:

\[ g(n)=\sum_{i=0}^{n}\left(\begin{array}{c} n \\ i \end{array}\right) f(i) \Longleftrightarrow f(n)=\sum_{i=0}^{n}(-1)^{n-i}\left(\begin{array}{c} n \\ i \end{array}\right) g(i) \]

posted @ 2023-08-14 09:39  exut  阅读(66)  评论(0编辑  收藏  举报
Title