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