前言
没有放代码。
你需要确保你学会了一些基础的数论知识,如线性筛、唯一分解定理。
一些定义和声明
积性函数
若函数
f(x) 满足对于
互质 的
a,b,有
f(ab)=f(a)f(b),则
f(x) 为积性函数。
若
任意 的
a,b 均满足
f(ab)=f(a)f(b),则
f(x) 为完全积性函数。
对于任何的积性函数
f(x) 都有
f(1)=1,易证。
加性函数
若函数
f(x) 满足对于
互质 的
a,b,有
f(ab)=f(a)+f(b),则
f(x) 为加性函数。
若
任意 的
a,b 均满足
f(ab)=f(a)+f(b),则
f(x) 为完全加性函数。
对于任何的加性函数
f(x) 都有
f(1)=0,易证。
等价性
若
f(x) 相当于
g(x),则可以记
f(x)⇔g(x),表示
f(x) 与
g(x) 等价。
卷积
两个函数的卷积记为
(f∗g)(x),若是函数
f(x) 自卷积,也可记为
(f∗f)(x)=f2(x)符号
为书写方便,记
a/b=⌊ba⌋。
欧拉函数
欧拉函数即
φ(n),被定义为
1∼n 中与
n 互质的数的个数。
特性:
1.若
p 是质数,则
φ(p)=p−1
2.若
p 是质数,则
φ(pk)=pk−1φ(p)(证明:由于
p 是质数,则
1∼p−1,p+1∼2p−1,…,pk−p∼pk−1 均与
p 互质,共有
pk−1 节长度为
φ(p) 的区间,故
φ(pk)=pk−1φ(p))
3.积性函数:若
p,q 互质,则有
φ(pq)=φ(p)φ(q)(证明参考
剩余系的复合)
筛法计算
若
i 是质数,则
φ(i)=i−1。
若
i 是合数,则
i 在线性筛中被自己的
最小质因子 筛掉。
设
n 为
i 的最小质因子,
i=nm。
- 若 n∣m,则 m 包含 i 的所有质因子,nm∏k=1spkpk−1=nφ(m)
- 若 n∤m,则 n,m 互质,由性质 1,3,得 φ(i)=φ(n)φ(m)=(n−1)φ(m)。
性质
∑d∣xφ(d)=x。
证明
- 在 x=1 时,易证。
- 在 x 为质数时,d 只能为 1 或 x,又有 φ(1)=1,φ(x)=x−1,故 ∑d∣xφ(d)=x 成立。
- 在 x 为合数且不为 1 时,不妨构造 x 个分数 x1∼x,化简后分母只有 x 的因数,且由于分子和分母互质,所以以因数 d 为分母的分数有且仅有 φ(d) 个,又因为共有 x 个分数,所以 ∑d∣xφ(d)=x 成立。
莫比乌斯函数
根据唯一分解定理,有
x=∏i=1spiai,其中
pi 为互不相同的质因子,
s 为质因子个数。
则有
μ(x)=⎩⎨⎧10(−1)sx=1∑i=1sai=sx=1,∑i−1sai=s
其中
∑i−1sai=s 的条件即
x 不含相同质因子。
筛法计算
若
i 是质数,则
μ(i)=−1。
若
i 是合数,则
i 在线性筛中被自己的
最小质因子 筛掉。
设
n 为
i 的最小质因子,
i=nm。
- 若 n∣m,则 i 有两个质因子 n,μ(i)=0
- 若 n∤m,则 i 比 m 多一个质因子 n,μ(i)=−μ(m)
两个性质
性质1
∑d∣xμ(d)=[x=1]。
证明
- 在 x=1 时,易证。
- 在 x=1 时,根据唯一分解定理,有 x=∏i=1spiai,由于在 x 有相同质因子时 μ(x)=0,因此可以构造 x′=∏i=1spi 使得 ∑d∣xμ(d)=∑d∣x′μ(d)。则:
- 不含质因子的 d(即 1)有 Cs0 个,μ(d) 为正;
- 含一个质因子的 d 有 Cs1 个,μ(d) 为负;
- 含两个质因子的 d 有 Cs2 个,μ(d) 为正;
- …
- 于是 ∑d∣x′μ(d)=∑i=0s(−1)sCsi,由二项式定理,∑i=0s(−1)sCsi=(1−1)s=0。
性质2
∑d∣xμ(d)dx=φ(x)。
证明
- 在 x=1 时,易证。
- 在 x=1 时,同上文构造 x′=∏i=1spi 使得 ∑d∣xμ(d)dx=∑d∣x′μ(d)dx′=x′∑d∣x′dμ(d)。又有 x′∑d∣x′dμ(d)=x(1−(p11+p21+…)+(p1p21+p2p31+…)−…)(这步即通过 μ(d) 的定义判断 dμ(d) 的正负性),因式分解得 x(1−(p11+p21+…)+(p1p21+p2p31+…)−…)=x′∏i=1s1−pi1,即 φ(x)。
狄利克雷卷积
定义
对于两个
积性函数 f(x),g(x),有
(f∗g)(x)=∑d∣xf(d)g(dx)
常见积性函数
元函数
ε(x)=[x=1];
恒等函数
id(x)=x。
常见卷积关系
1.
∑d∣xμ(d)=[x=1]⇔(μ∗1)(x)=ε(x)
2.
∑d∣xφ(d)=x⇔(φ∗1)(x)=id(x)
3.
∑d∣xμ(d)dx=φ(x)⇔(μ∗id)(x)=φ(x)
4.对于任意积性函数
f,有
(f∗ε)(x)=f(x)
5.对于任意积性函数
f,有
(f∗1)(x)=f(x)
证明考虑狄利克雷卷积即可,此处省略。
和式的变换
和式即类似
∑k∈Kak 的形式的式子。
替换条件式
∑i=1n∑j=1m∑gcd(i,j)∣dd=∑i=1n∑j=1m∑d=1n[d∣i][d∣j]d。
容易理解,若
i,j 均整除
d,则
d 至少包含
i,j 的一个公因数,即
gcd(i,j)∣d。
替换指标变量
∑i=1n∑j=1m[gcd(i,j)=d]=∑id=1n∑jd=1m[gcd(id,jd)=d]。
∑id=1n 和
∑jd=1m 都是在枚举
d 的倍数,故当
i,j 互质时,
gcd(id,jd)=d。
交换求和顺序
∑i=1n∑j=1mF(i)G(j)=∑j=1m∑i=1nF(i)G(j)。
易证。
分离变量
∑i=1n∑j=1mF(i)G(j)=∑j=1mF(i)∑i=1nG(j)。
证明考虑乘法交换律。
莫比乌斯反演
定义
对于两个
积性函数 f(x),g(x),有
f(x)=∑d∣xg(d)⇔g(x)=∑d∣xμ(d)f(dx)
称
f(x) 为
g(x) 的莫比乌斯变换,
g(x) 为
f(x) 的莫比乌斯逆变换。
证明
有
f(x)=∑d∣xg(x)1(dx)=(g∗1)(x),g(x)=∑d∣xμ(d)f(dx)=(μ∗f)(x)(狄利克雷卷积)。
若左式成立,有
f(x)=(g∗1)(x),则
g(x)=(μ∗f)(x)=(μ∗g∗1)(x)=((μ∗1)∗g)(x)=(ε∗g)(x)=g(x),即右式也成立;
若右式成立,有
g(x)=(μ∗f)(x),则
f(x)=(g∗1)(x)=(μ∗f∗1)(x)=((μ∗1)∗f)(x)=(ε∗f)(x)=f(x),即左式也成立。
应用
即给定
n,m,求
∑i=1n∑j=1mlcm(i,j)(mod20101009)。
解法
开始推式子。
原式即
∑i=1n∑j=1mgcd(i,j)ij,将
gcd(i,j) 单独拎出来,得
∑i=1n∑j=1mij∑d=1nd[gcd(i,j)=d] 交换求和顺序,则有
∑d=1n∑i=1n∑j=1mijd[gcd(i,j)=d],替换指标变量,得
∑d=1n∑id=1n∑jd=1mijd2d[gcd(id,jd)=d] id 上限为
n,则
i 上限为
n/d,
j 同理(之后统称为修改上限)得
∑d=1n∑i=1n/d∑j=1m/dijd[gcd(i,j)=1] 将
gcd(i,j) 代入
∑k∣xμ(x)=[x=1] 中,得
∑k∣gcd(i,j)μ(gcd(i,j))=[gcd(i,j)=1] 代入上式,得
∑d=1n∑i=1n/d∑j=1m/dijd∑k∣gcd(i,j)μ(k) 替换条件式,得
∑d=1n∑i=1n/d∑j=1m/dijd∑k=1n/dμ(k)[k∣i][k∣j] 交换求和顺序并分离变量,得
∑d=1nd∑k=1n/dμ(k)∑i=1n/di[k∣i]∑j=1m/dj[k∣j] 替换指标变量,得
∑d=1nd∑k=1n/dμ(k)∑ik=1n/dik∑jk=1m/djk 分离变量并修改上限,得
∑d=1nd∑k=1n/dμ(k)k2∑i=1n/dki∑j=1m/dkj μ(k) 显然可以通过预处理线性求出,所以只用先对
d 整除分块,然后套一个对
k 的整除分块即可。
杜教筛
给定积性函数
f(x),求
s(n)=∑i=1nf(i)。
解法
构造积性函数
g(x),使得
(f∗g)(x) 的前缀和容易计算。
根据递推式
g(1)s(n)=∑i=1n(f∗g)(i)−∑i=2ng(i)s(n/i)
证明
下面证明递推式
g(1)s(n)=∑i=1n(f∗g)(i)−∑i=2ng(i)s(n/i) 成立。
现在有
∑i=1n(f∗g)(i),狄利克雷卷积得
∑i=1n∑i∣df(di)g(d) 替换条件式得
∑i=1n∑d=1n[i∣d]f(di)g(d) 交换求和顺序得
∑d=1n∑i=1n[i∣d]f(di)g(d) 替换指标变量得
∑d=1n∑id=1n[id∣d]f(did)g(d) 即
∑d=1n∑id=1nf(i)g(d) 修改上限得
∑d=1n∑i=1n/df(i)g(d) 分离变量得
∑d=1ng(d)∑i=1n/df(i) 将
s(n/d)=∑i=1n/df(i) 代入上式得
∑d=1ng(d)s(n/d) g(1)s(n)+∑i=2ng(i)s(n/i) 即
g(1)s(n)=∑i=1n(f∗g)(i)−∑i=2ng(i)s(n/i)
优化
1.使用线性筛预处理较小的
s(n);
2.记忆化防止重复计算;
3.使用整除分块做
s(n/i) 的递归。
应用
有
(φ∗1)(x)=id(x),注意这里
1(x) 是常数函数。
则有
s(n)=1(1)s(n)=∑i=1nid(i)−∑i=2n1(i)s(n/i)=∑i=1ni−∑i=2ns(n/i)=2(n+1)n−∑i=2ns(n/i)。
有
(μ∗1)(x)=ε(x)。
则有
s(n)=1(1)s(n)=∑i=1nε(i)−∑i=2ns(n/i)=1−∑i=2ns(n/i)。
例题
P11480
先考虑全部圣诞老人来到的情况,根据经典结论,编号为
a2 的灯会被关闭。
若仅改变编号为
t 的灯的状态,那么需要改变的灯的编号为满足
at≤n 且
μ(a)=0 的
at。这样对于第
it 盏灯,它就会被改变
∑d∣i[μ(d)=0] 次,由于有
∑d∣iμ(d)=[i=1],所以除了
t 之外,编号为
it 的灯都会被改变偶数次。
那么仅改变编号为
j2(j=1) 的灯,第
i 盏灯就需要改变
∑j=2j[j2∣i∧μ(j2i)=0] 次,其中
∧ 表示两边的条件需要同时成立。可以发现
j2∣i∧μ(j2i)=0 即要求
j2 是
i 的因数且
j2i 没有其它因子是完全平方数,也就是确定了唯一的
j。
于是只有在
i 对应的
j=1 时,
∑j=2j[j2∣i∧μ(j2i)=0] 的值才为
0。因此来到的圣诞老人
i 没有相同质因子,即
μ(i)=0,总数为
∑i=1nμ2(i)=∑i=1nμ(i)⌊i2n⌋。
杜教筛求解即可。
P10186
引理 1:
在
n2 点阵中,若直线第一个穿过
(x,y) ,则直线会穿过
n/max(x,y) 个点。
引理 2:
若直线穿过的第一个点为
(x,y),则
gcd(x,y)=1。
这两个引理比较简单,读者自证不难。
因此对角线一边的答案(另一边是镜像的)就是
∑i=1n∑j=1i−1(n/max(i,j))2[gcd(i,j)=1],由于
j 的上限是
i−1,故
max(i,j)=i。
然后用和式的变换可以化出
∑i=1n(n/i)2∑j=1i−1[gcd(i,j)=1] 观察到后面的
∑j=1i−1[gcd(i,j)=1] 其实就是
φ(i),因此原式就是
∑i=1nφ(i)(n/i)2。
对角线上有
n 个点,贡献就是
n2。
于是答案就是
n2+2∑i=1nφ(i)(n/i)2。
n/i 可以整除分块,
φ(i) 前缀和可以用杜教筛。
一些练习题