数论
前置知识:常用公式
干货来啦,这里记录了一些推柿子是使用频率很高的公式(貌似可能也不知道有没有证明),善用这些公式可以带来极大的简洁。
-
\[d(ij)=\sum\limits_{x\vert i} \sum\limits_{y\vert j}[gcd(x,y)=1] \]
-
设\(p_i^{e_i}\)为\(n\)的唯一分解
\[\prod\limits_{i=1}^{k}(p_i^{e_i}+1)=\sum\limits_{i|n}[(i,\frac{n}{i})=1]i \]
前置知识:推柿子小技巧
我会把自己总结的一些常用技巧扔在下面
- 改变枚举顺序,常见的有改枚举约数为枚举倍数
前置知识:常见定理
-
费马小定理
若 \(p\) 为质数且 \(a,p\) 互质,则:
\[a^{p-1}\equiv 1\pmod p \]证明略。
-
威尔逊定理
若 \(p\) 为质数,则 \((p-1)!\equiv -1\pmod p\)。证明略。
-
二次探测定理
若 \(p\) 为质数,且 \(x^2\equiv 1\pmod p\),则 \(x\equiv 1\pmod p\) 或 \(x\equiv -1 \pmod p\)。
证明:原式可以写为 \((x+1)(x-1)\equiv 0\pmod p\),由唯一分解定理可知,必然有 \(x\equiv 1\pmod p\) 或 \(x\equiv -1 \pmod p\)。证毕。
莫比乌斯函数及其反演
-
定义
定义莫比乌斯函数:
\[\mu(x)=\begin{cases}1,x=1\\(-1)^k,x=p_1\times p_2 \times ...\times p_k,p_i \in Prime \\ 0,otherwise\end{cases} \]可以看到,\(u(x)\)在\(x\)有平方因子时为\(0\),否则若\(x\)的质因子个数为奇数则\(\mu(x)=-1\),偶数则为\(1\)。
-
性质
\[\mu * I = e \]其中
\[I(x)=1,e(x)=\begin{cases}1,x=1\\0,otherwise \end{cases} \] -
证明
显然
\[(\mu * I)(1)=1 \]当 \(i>1\) 时
\[(\mu * I)(i)=\sum\limits_{d|i}\mu(d) \]考虑对 \(i\) 进行质因数分解,由 \(\mu\) 的定义我们知道,\(i\) 的平方因子在这里都可以看做次数为 \(1\),即我们可以找到 \(i'=p_1\times p_2 \times ...\times p_k\) 使得 \((\mu * I)(i)=(\mu * I)(i')\)。
思考这个 \(i'\) 的答案,带入容易知道
-
例题
Min_25筛
-
定义
-
一些细节/补充
- 可以使用 Min_25筛 的充分条件:\(f\) 是积性函数;\(f(p^k)\) 可以快速计算(\(p\) 是质数);\(f\) 在质数处的前缀和可以快速运算(其实这就是 Min_25筛 的第一部分,当然有时候这个东西可以直接得到,但如果不能直接计算时,要求把 \(f\) 拆成若干个完全积性函数(第一部分需要用到的性质))。
- 对于需要保存的形如 \(\lfloor \frac{n}{i}\rfloor\) 的下标,我们可以以 \(\sqrt{n}\) 为界氛围两部分保存。
- \(1\) 在所有的函数中均为被算进去,最后要加上 \(1\)。、
-
例题:
二项式反演
著名的二项式定理:
二项式反演就是已知:
然后推出来:
证明(在原式中带入 \(g_j\)):
Miller_Rabin素数测试
我们钦定一个 \(a\),对 \(p\) 做一次测试:
- 若 \(p\) 为素数,首先一定得满足费马小定理。
- 设 \(p-1=2^k\times q\),那么 \(a^{2^k\times q}\equiv 1\pmod p\),我们先算出 \(a^q\),然后用二次探测定理一次一次判就好了。
若一个数通过一次测试,则它是素数的概率是 \(25\%\),我们可以多选几个数提高准确率。
BSGS及其拓展
-
BSGS
先考虑 \((a,p)=1\) 的情况:
类似分块,我们取块大小为 \(k=\lceil \sqrt p \rceil\),那么如果有解,形式一定可以表达为 \(a^{km-i}\equiv b\pmod p\)(\(m\in N^*,0\le i<k\))。也就是 \(a^{km}\equiv b\times a^i\pmod p\)。我们只需要预处理所有 \(k\) 个 \(b\times a^i\)(放在一个哈希表里),然后一个一个查询 \(a^{km}\) 就好了(由欧拉定理,如果 \(m> k\) 还没找到解就一定无解了)。
-
ExBSGS
现在 \((a,p)\ne 1\) 了,怎么办呢?
先给出一个结论:若 \((a,p)\nmid b\) 且 \(b\ne1\),则此方程无解(需要注意的是逆命题不一定成立)。
我们现在把无解的情况判掉,记 \(d=(a,p)\),然后考虑做一点转化:
\[a^x\equiv b\pmod p\\ a^{x-1}\frac a d\equiv \frac b d \pmod{\frac p d}\\ a^{x-1}\equiv\frac b d(\frac a d)^{-1}\pmod{\frac p d} \]如果 \(d=1\), 那么我们可以直接去跑 BSGS,否则我们发现每次迭代后 \(p\) 必然减小,一直迭代下去就好了。