2024-02-15 14:11阅读: 223评论: 0推荐: 3

莫比乌斯反演

“数论所生,繁华之地。” —— 一径入繁华

在未特殊指出的前提下,字母均代表正整数。

持续补充中,如果有任何问题或者想要交流,欢迎联系我。

Upd on 2024/9/20:完善了一些内容。

数论分块

引理 1

abc=abc

证明

显然有 ab=ab+rr[0,1))。

abc=1cab=1c(ab+r)=1cab+rc=abc。证毕。

引理 2

i 取遍 [1,n] 时,ni 只有 Θ(n) 种取值。(应用时,可以认为是 2n

证明

  • in 时,由于 i 只有 Θ(n) 种选择,所以只有 Θ(n) 种取值;
  • i>n 时,ni<n,也只有 Θ(n) 种取值。
    证毕。

数论分块

引理 3

对于正整数 n,设 i[1,n]。则对于 x[i,nni]nx=ni

证明

函数 f(x)=nx 显然是单调递减的。令 g(i)=nni

注意到 g(i)nni=i(由下取整函数的性质),所以 ng(i)ni

并且,ng(i)nnni=ni,所以 ng(i)=ni

由于 g(i)i,而在区间 [i,g(i)] 的两端,函数 h(i)=ni 都有 h(i)=h(g(i))。由于 h 的不严格递减性质,引理成立。
证毕。

结合引理 2,我们知道,函数 h(i)=ni 本质不同的取值一共有 Θ(n) 种,而且每个取值的区间恰好为 [l,g(l)]。结合这个性质,我们可以在 Θ(n) 内求出一些和 h(i) 有关的和式,这个 trick 被称为整除分块

下面我们结合几道例题来对整除分块的应用进行说明。

UVA11526 H(n)

给定 nd,求

i=1nni

的值。

T1031n<231

引理 3 的直接应用,这里给出核心代码。

int ans=0, l=1, r;
while (l<=n) {
r=n/(n/l);
ans+=(r-l+1)*(n/l);
l=r+1;
}

理解了引理 3 后,这段代码是不难理解的。

P2261 [CQOI2007] 余数求和

给定 n,k,求

1inkmodi

不难发现 kmodi=kiki。于是数论分块即可,时间复杂度 Θ(n)

P3935 Calculating

x 分解质因数后结果为 1inpiki,定义 f(x)=1in(ki+1),求

lirf(i)

f 函数实际上求了 x因数个数(即 f(n)=σ0(n))。

对于正整数 np[1,n] 内能被 p 整除的数仅有 np 个。

(证明:仅有形如 1p,2p,,kp 这样的数能被整除。而 kpnknp。)

然后利用一点前缀和与差分的知识,我们不难得到区间 [l,r] 内能被 p 整除的数仅有 (rpl1p) 个。

那么我们枚举这个 p 直接算就好了。即

1ir(ril1i)

时间复杂度 Θ(n)

P2260 [清华集训2012] 模积和

i=1nj=1m(nmodi)×(mmodj),ij

19,940,417 取模。

不妨设 nm

首先可以把不相关的部分提出来。对于 ij 的限制,我们最后减去 (nmodi)(mmodi) 即可。

i=1n(nmodi)×j=1m(mmodj)

然后拆开。

i=1n(nini)×j=1m(mjmj)

然后就是

(n2i=1nini)(m2i=1mimi)

对于减掉的式子,我们有

(nmodi)(mmodi)=i=1n(nini)(mimi)=i=1n(nmmininimi+i2nimi)

可能要用到的公式:

i=1ni2=n(n+1)(2n+1)6

注意,19,940,417 不是素数。

积性函数

对于算术函数 f,若对于 pq,有 f(pq)=f(p)f(q) 恒成立,则称 f积性的

p,q,有 f(pq)=f(p)f(q) 成立,我们称 f完全积性的

对于任意积性函数 f,都有 f(1)=1

证明 任取 n,有 f(n)=f(1)f(n),得到 f(1)=1

f 描述 公式 积性
ε 元函数 εf=fμ1=ε 完全
1 常值 1 函数 - 完全
Id 恒等函数 φId=Id 完全
μ Mobius 函数 f=μgg=f1 积性
φ Euler 函数 μId=φ 积性
σ0 因数个数函数 11=σ0 积性
σ1 因数和函数 Id1=σ1 积性

如果你不理解记号的含义,可以先向下阅读。

Dirichlet 卷积

对于数论函数 f,g,定义其 Dirichlet 卷积

(fg)(n)=dnf(d)g(nd)

一些性质:

交换律fg=gf

证明 由定义立刻得到。

常用数论函数简介

元函数 ε

定义

ε(n)=[n=1]

元函数是 Dirichlet 卷积意义下的单位元。也就是说,对于任意数论函数 f,有 εf=f (读者自证不难。)

Mobius 函数 μ

定义

不妨记正整数 n 的唯一分解式为 n=i=1kpici。则

μ(n)={1,n=1(1)k,c1=c2==ck=10,i,ci2

值得一提的是,Mobius 函数在数论中的容斥性质。事实上,这也是它定义的根本目的。

考虑一个问题:

问题

给定正整数 n,求出与不大于它且它互素的数个数的表达式(即 φ(n)

不妨假设 n 含有素因子 2,3。那么 n2 就是 [1,n] 中,含有素因子 2 的数的数量(2,4,,n);n3 就是 [1,n] 中,含有素因子 3 的数的数量(3,6,,n);我们把 n 减去 n2,减去 n3,但是你会发现同时是 2,3 倍数的数减重了,需要加回来。你会发现这就是 Mobius 函数前面的系数。

综上,我们可以得到

重要性质

φ(n)=dnμ(d)nd=μId

这个性质非常重要,请牢记。

接下来是几个同样重要的性质。

重要性质

μ1=ε

这个性质非常重要,请牢记。

证明 1 利用后面提到的 Mobius 反演立即得证。

证明 2

n=1 时显然成立。考虑 n=p1c1p2c2pece>1pi 两两不同)。

那么左边等于 μ(1)+iμ(pi)+i,jμ(pipj)++1,2,,eμ(p1p2pe)

即为

k=0e(ek)(1)k=(11)e=0

证毕。

推论

[ij]=di,djμ(d)

这个推论非常重要,请牢记。

证明

=[gcd(i,j)=1]=ε(gcd(i,j))=dgcd(i,j)μ(d)=di,djμ(d)

Euler 函数 φ

定义

对于正整数 n,定义 φ(n) 表示不大于 n 且与 n 互素的正整数个数。即

φ(n)=i=1n[gcd(i,n)=1]

你可能对 φ 的这个公式已经烂熟于心了:

引理 1

φ(n)=npn,pPp1p

证明 本质上就是引理 2。具体地说:将 p1p 改写为 11p,然后注意到那个负号实际上就是 Mobius 函数的负号。

但是你还需要知道:

引理 2

φ(n)=dnμ(d)nd=μId

证明μ 函数部分。

引理 3

n=dnφ(d)

即,Id=φ1

证明 1 由引理 3 和 Mobius 反演立刻可得。

证明 2
考虑分母为 n,分子为 1nn 个分数 1n,2n,,nn

将这 n 个分数全部变成既约的(即,令分子和分母互素)。注意到所有的分母都是 n 的因数,而且分母为 d 的分数的数量就是 φ(d)(注意分子和分母互素)。

所以我们得到了

n=dnφ(d)

证毕。

引理 4

φ(ij)=φ(i)φ(j)gcd(i,j)φ(gcd(i,j))

证明

左边就是

ijpP,pipjp1p

右边就是

ijgcd(i,j)pi,pPp1pqi,qPq1qgcd(i,j)rP,rirjr1r

ijpi,pPp1pqi,qPq1qrP,rirjr1r

对于左边,是对 i 的素约数或者 j 的素约数求的,可以理解为 |AB|。分子对 i 的素约数和 j 的素约数求的,可以理解为 |A|+|B|。分母是对 gcd(i,j) 的素约数求的,可以理解为 |AB|

然后根据容斥原理有 |AB|=|A|+|B||AB|。证毕。

Mobius 反演

定理(Mobius 反演)
对于积性函数 f,g

f=μgg=f1

证明

由定义有 f(n)=dnμ(d)g(nd)

f1=dnf(d)=dnddμ(d)g(dd)=dnddμ(dd)g(d)=dng(d)ddμ(dd)=dng(d)kndμ(kdd)

当且仅当 nd=1d=n 时,μ 有非 01

于是 f1=g。证毕。

  • 形式 1

f(n)=dng(d)g(n)=dnμ(d)g(nd)

  • 形式 2

f(n)=ndg(d)g(n)=ndμ(d)g(dn)

常见应用

我们给出几个常见的形式。以下默认 nm

  • 形式 1

i=1nj=1m[ij]=i=1nj=1m[gcd(i,j)=1]=i=1nj=1mdi,djμ(d)=d=1ni=1nj=1m[di][dj]μ(d)=d=1ni=1ndj=1mdμ(d)=d=1nμ(d)ndmd

利用数论分块,时间复杂度 Θ(n)

  • 形式 2

i=1nj=1mgcd(i,j)=i=1nj=1mdi,djφ(d)=d=1ni=1nj=1m[di][dj]φ(d)=d=1ni=1ndj=1mdφ(d)=d=1nφ(d)ndmd

  • 形式 3

i=1nj=1mf(gcd(i,j))=i=1nj=1md=1nf(d)[gcd(i,j)=d]=d=1nf(d)i=1nj=1m[gcd(i,j)=d]=d=1nf(d)i=1ndj=1md[gcd(id,jd)=d]=d=1nf(d)i=1ndj=1md[gcd(i,j)=1]=d=1nf(d)k=1ndμ(k)nkdmkd

t=kd。于是

=t=1ndtf(d)μ(td)ntmt=t=1nntmtd=1nf(d)μ(td)

预处理后时间复杂度 Θ(nlogn)Θ(n)

行列式 与 数论函数

本部分内容较为进阶,建议在对莫反和行列式的性质比较熟悉后再阅读。

  • 形式 1

对于 n 阶方阵 ai,j=gcd(i,j),求出其行列式。要求做到 Θ(n)

不妨手玩一个例子。

|1111121211311214|=|1111010100200103|=|1111010100200002|

我们断言:消元后,有

ai,j=[ij]φ(i)

我们尝试详细证明结论。

我们采取如下的消元策略:依次考虑第 i=1,2,,n 行,我们将第 2i,3i,,ki 行减去第 i 行。

设消完元后的部分为 a

假设对于前 (i1) 行,结论是成立的。那么第 i 行减去过第 k 行,当且仅当 ki。且对于所有的 kjak,j=0,所以当且仅当 kj 时有贡献。那么 ai,j=ai,jki,kj,k<iφ(k)

ij 时,ki,kj,k<iφ(k)=gcd(i,j)。所以减去后 ai,j=0

否则 ki,kj,k<iφ(k)=iφ(i)。而此时 ai,j=gcd(i,j)=i,所以减去之后就得到了 ai,j=φ(i)

而对于第 1 行,结论显然是成立的。根据数学归纳法,证毕。

  • 形式 2

对于 n 阶方阵 ai,j=gcd(i,j)k,求出其行列式,其中 k 为常数。要求做到 Θ(nlogn) 以下。

继续手玩。当 k=2 时,

|11111414119114116|=|11110303008003015|=|11110303008000012|

k=3

|111118181127118164|=|111107070026007063|=|111107070026000056|

利用 OEIS 找出规律:定义 Jordan totient 函数 Jk(n)=dndkμ(nd),则消元后,ai,j=[ij]Jk(i)。不难发现 k=1 的时候退化成了 φ

朴素地枚举倍数是 Θ(nlogn) 的。可以优化到 Θ(n)

PGCD - Primes in GCD Table

pPi=1nj=1m[gcd(i,j)=p]

pPi=1nj=1m[gcd(i,j)=p]=pPi=1npj=1mp[gcd(i,j)=1]=pPd=1npμ(d)npdmpd

做到这一步已经是 Θ(Tnlnn) 的了。不过我们还可以更进一步。

t=pd,则原式等价于

t=1nntmtpt,pPμ(tp)

f(t)=pt,pPμ(tp)。如果能快速预处理出 f 就可以在 Θ(Tn) 内解决本题。

一方面可以枚举所有素数的倍数来预处理。这样是 Θ(nloglogn) 的。

下面我们进行分讨。以下设 x 的最小素因子为 y,且 x=iy

  1. xPx=1

显然有 f(x)=1

  1. imody=0

piyμ(iyp) 当且仅当 p=y 时可能不为 0。那么有 f(x)=μ(i)

  1. imody0

我们有 f(iyp)=f(ip),因此 f(i) 中的每一项都在 f(x) 中有对应项。当 p=y 时,μ(i) 会有额外的贡献(因为多了素因子 y)。于是 f(x)=μ(i)f(i)

综上

f(x)={1xPμ(i)imody=0f(i)+μ(i)imodi0

时间复杂度 Θ(nloglogn)Θ(n)Θ(n)Θ(n)

GCDMAT - GCD OF MATRIX

i=i1i2j=j1j2gcd(i,j)

直接拆成四个询问,套用形式 2 即可。Θ(Tn)

P3327 [SDOI2015] 约数个数和

d(x)x 的约数个数,给定 n,m,求

i=1nj=1md(ij)

我们知道

d(n)=dn1

我们有 d(n) 的特殊性质

d(ij)=xiyj[gcd(x,y)=1]

则有

i=1nj=1mxiyj[gcd(x,y)=1]=x=1ny=1mi=1nxj=1my[gcd(x,y)=1]=x=1ny=1mnxmy[gcd(x,y)=1]=d=1nμ(d)x=1nnxy=1mmy

时间复杂度 Θ(n+Tn)

P2714 四元组统计

给定正整数数列 ai(长度为 n),求出有多少个四元组 (i,j,k,l) 满足 gcd(ai,aj,ak,al)=1

n104T100

不妨设 cntk=i=1n[ai=k]V=104

设满足 dgcd(ai,aj,ak,al) 的四元组个数为 f(d),显然 f(d)=(dncntn4)。设满足 gcd(ai,aj,ak,al)=d 的四元组个数为 g(d),则 f(d)=dng(n)g(d)=dnμ(nd)f(n)

注意这里利用了莫反的形式 2。

f(n)=ndg(d)g(n)=ndμ(d)g(dn)

时间复杂度 Θ(Tnlogn)

P5221 Product

i=1nj=1nlcm(i,j)gcd(i,j)

104,857,601 取模。

200ms,7.81MBn106

[RC-02] GCD

i=1nj=1np=1njq=1nj[gcd(i,j)=1][gcd(p,q)=1]

其中 n2×109

i=1nj=1np=1njq=1nj[gcd(i,j)=1][gcd(p,q)=1]=i=1nj=1np=1nq=1n[gcd(i,j)=1][gcd(p,q)=j]=i=1np=1nq=1n[gcd(i,p,q)=1]=d=1nμ(d)nd3

使用杜教筛维护,时间复杂度 Θ(n23)

LOJ #6491「XXOI 2018」简单的最大公约数

简单反演一下。

=i1=1mi2=1min=1mdi1,di2,,dinφ(d)=d=1mφ(d)i1=1m[di1]i2=1m[di2]in=1m[din]=d=1mφ(d)mdn

P3768 简单的数学题

i=1nj=1nijgcd(i,j)

n1010

i=1nj=1nijgcd(i,j)=i=1nj=1nijdi,djφ(d)=d=1nφ(d)i=1ndi=1nd(id)(jd)=14d=1nφ(d)d2{nd(nd+1)}2=14d=1nφ(d)d2(nd2+nd)2

使用杜教筛维护。时间复杂度 Θ(n23)

P3172 [CQOI2015] 选数

i1=lri2=lrin=lr[gcd(i1,i2,,in)=k]

rl105n,k109

不妨先计算出 i[1,r] 的答案再减去 i[1,l1] 的答案。以下令 n:=rk

i1=1ri2=1rin=1r[gcd(i1,i2,,in)=k]=i1=1ni2=1nin=1n[gcd(i1,i2,,in)=1]=i1=1ni2=1nin=1ndi1,di2,,dinμ(d)=d=1nμ(d)i1=1ni2=1nin=1n[di1][di2][din]=d=1nμ(d)ndn

对于 [1,l1] 的计算同理。时间复杂度 Θ(n23logn)

以上是错误的解法。正确的解法:令 L=lkR=rk。于是有

i1=lri2=lrin=lr[gcd(i1,i2,,in)=k]=i1=LRi2=LRin=LR[gcd(i1,i2,,in)=1]=i1=LRi2=LRin=LRdi1,di2,,dinμ(d)=d=1Rμ(d)i1=LRi2=LRin=LR[di1][di2][din]=d=1Rμ(d)(RdL1d)n

可以用杜教筛维护。

P4318 完全平方数

求出第 k 个不含素平方因子的数。

T50k109

我们有结论:

[1,n] 中,μ(i)0 的数(即不含素平方因子的数)的数量约为 6π2n。(巴塞尔问题)

于是二分是显然的。于是我们需要求

i=1nf(i)

其中 f(i) 代表 i 是否含有素平方因子。

解法 1

考虑 Mobius 函数。

删去 22 的倍数,删去 32 的倍数,则 (2×3)2 的倍数被删了两次,需要加回来。

于是就是

i=1nμ(i)ni2

直接计算答案,时间复杂度 Θ(Tnlogn)

运用二次方数论分块August_Light)可以将时间复杂度优化到 Θ(n+Tn0.4logn)(来源:UOJ 群)。

解法 2

注意到 f(i)=μ(i)2。于是我们只需要快速求出 μ2 的前缀和。

考虑杜教筛

f=μ2,有一个很神仙的想法就是构造 g(n)=[xN,x2=n]

引理

(fg)(n)=1

证明

原式即为

dng(n)μ(nd)2

n 的最大平方因子是 1 时显然成立。以下设 n 的最大平方因子非 1

  • d 取到 n最大平方因子的时候,g(n)=μ(nd)2=1

  • d 取到 n非最大平方因子的时候,μ(nd)2=0,从而这一项贡献为 0

  • d 取到非平方数的时候,g(d)=0

证毕。

于是 (fg)(n) 的前缀和就是 Id 是极易求的。那么套用杜教筛的表达式就是

g(1)S(n)=i=1n(fg)(i)i=2ng(i)S(ni)

但是你会发现 g(i) 的前缀和不好求。不过我们可以挖掘性质,换一种枚举方式

S(n)=ni=2ng(i2)S(ni2)=ni=2nS(ni2)

然后直接做就可以了。单次时间复杂度应该是低于 Θ(n23) 的。

CF1139D Steps to One

一个初始为空的数列,每次随机选一个 [1,m] 之间的整数加到数列中,当数列中所有数的 gcd1 的时候停止。求数列长度的期望。

解法 1

长度为 n 的序列,gcd1 的方案数有

a1=1man=1m[gcd(a1,,an)=1]=a1=1man=1mda1,,danμ(d)=d=1mμ(d)mdn

注意,这是长度不大于 n 的序列中,序列 gcd1 的方案数。

不妨记为 f(n)(规定 f(0)=0)。则答案为

i=1+if(i)f(i1)mi

但是你发现这样求不了一点。我们考虑从期望的性质着手。

E[x]=i1iProb(x=i)=i1Prob(x=i)j=1i1=j1ijProb(x=i)=j1Prob(xj)=j1[Prob(x=j)+Prob(x>j)]=1+j1[1Prob(xj)]=1+j1[1d=1mμ(d)mdjmj]=1+j1[d=2mμ(d)mdjmj]=1d=2mμ(d)j1[1mmd]j=1d=2mμ(d)[1111mmd]=1d=2mμ(d)mdmmd

可以 Θ(m23) 甚至 Θ(m) 计算。

解法 2

不妨设 f[i] 为数列 gcdi 的期望长度。

不难想到

f[n]=1+1mi=1mf[gcd(n,i)]

[1,m] 内,满足 gcd(i,n)=a 的数的数量为 g(n,a)。设 [1,n] 内,与 i 互素的数的数量为 h(n,i)。那么显然有 g(n,a)=h(ma,na)。那么考虑求出所有有效的 h(n,i)。显然 inm,我们求出所有的 Θ(mlogm)h(n,i),即可 Θ(1) 推出 g 的值。

于是,我们的式子变成了

f[n]=1+1mdng(m,d)f[d]

d=n 的部分判掉,我们得到

[1g(m,m)m]f[n]=1+1mdn,d<ng(m,d)f[d]

于是就可以直接递推。答案是 1+1mi=1mf[i]

最后考虑如何计算 h(n,a)

h(n,a)=i=1n[gcd(i,a)=1]=i=1ndi,daμ(d)=daμ(d)di,in1=daμ(d)nd

于是就做完了。

P7504 「HMOI R1」可爱的德丽莎

给定 n,A,B,求

x=1ny=1ni=1x[xA][ix]ij=1y[yB][jy]j

998,422,353 取模。

1n,k1,k22×109

警示后人:不要像我一样看错题,导致三天都没想出来怎么写。

首先定义

f(n,A)=i=1n[iA]j=1ij[ji]

注意到原式即为 f(n,A)f(n,B)。我们只需要考虑怎么求出 f(n,A) 即可。

下面的推导中,记 sk(n)=i=1nik

f(n,A)=i=1n[gcd(i,A)=1]j=1ij[gcd(i,j)=1]=i=1n[gcd(i,A)=1]j=1ijdi,djμ(d)=i=1n[gcd(i,A)=1]diμ(d)dj,jij=i=1n[gcd(i,A)=1]didμ(d)s1(id)=12i=1n[gcd(i,A)=1]didμ(d)id(id+1)=12i=1n[gcd(i,A)=1]idiμ(d)(id+1)=12i=1n[gcd(i,A)=1]i[diμ(d)id+diμ(d)]=12i=1n[gcd(i,A)=1](iφ(i)+iε(i))=12+12i=1n[gcd(i,A)=1]iφ(i)

考虑到 g(n)=[gcd(n,A)=1]iφ(i)=ϵ(gcd(i,A))iφ(i) 是一个积性函数。数据范围比较大,考虑用杜教筛求前缀和。

注意到 (Idφ)Id=Id2,且注意到 ε(gcd(i,A))完全积性的。那么,

(ε(gcd)Idφ)(ε(gcd)Id)=dnε(gcd(d,A))dφ(d)ndε(gcd(nd,A))=ndnε(gcd(d,A)gcd(nd,A))φ(d)=ε(gcd(n))n2=ε(gcd)Id2

于是令 h=ε(gcd)Idgh=ε(gcd)Id2。考虑两者的前缀和。

i=1nh(i)=i=1nidi,dAμ(d)=dAdμ(d)s1(nd)

同理,gh=dAd2μ(d)s2(nd)

然后就可以完成此题了。

P5218 无聊的水题 II

1N 中选择若干个数,使得它们可以线性组合出任意整数。求选择的方案数,对 (109+7) 取模。

N1011。部分分:N107

6s,512MB

显然就是选取若干个数,使得其 gcd1

假设选出了 n 个数,那么很容易列出式子:

a1=1Na2=a1+1Nan=an1+1N[gcd(a1,a2,,an)=1]

最后很容易能够反演出来是

d=1Nμ(d)(Ndn)

然后简单处理一下(注意到只需要处理 nNd 的部分),就可以通过 N107 的数据,拿到 60 分。

但是这个做法是没有前途的。

考虑容斥。设 g(i) 为选出若干个数使得 gcd=i 的方案数,f(i) 为选出若干个数使得 igcd 的方案数。

简单反演一下可以得到

g(i)=diμ(id)f(d)

然后显然有 f(i)=2Ni1。于是我们得到答案:

i=1Nμ(i)(2Ni1)

利用杜教筛维护即可,时间复杂度 Θ(n23)

P4449 于神之怒加强版

i=1nj=1mgcd(i,j)k

nm

不难想到

i=1nj=1mgcd(i,j)k=i=1nj=1mdi,djdk[d=gcd(i,j)]=i=1nj=1mdi,djdk[d=gcd(i,j)]=d=1ndki=1nj=1m[gcd(i,j)=d]=d=1ndkp=1ndμ(p)npdmpd

不妨设 t=pd

=t=1nntmtdtμ(td)dk

不妨设 f(n)=dnμ(nd)dk。考虑快速求出 f

以下设 yx 的最小素因子,且 x=iy

  • f=1fP

显然有 f(x)=xk

  • imody=0

f(x)=f(i)

  • imody0

f(x)=f(y)f(i)

P6825 「EZEC-4」求和

i=1nj=1ngcd(i,j)i+j

不妨令 N:=nd

错误的解法

i=1nj=1ngcd(i,j)i+j=d=1nμ(d)i=1nj=1n[di][dj]didj=d=1nμ(d)i=1Nj=1Ndiddjd=d=1nμ(d)(d(N+1)ddddd1)2

i=1nj=1ngcd(i,j)i+j=d=1ni=1nj=1ndi+j[gcd(i,j)=d]=d=1ni=1Nj=1Nd(i+j)d[gcd(i,j)=1]=d=1ni=1Nj=1Nd(i+j)dpi,pjμ(p)=d=1np=1Nμ(p)i=1Nj=1Nd(i+j)d=d=1np=1Nμ(p)i=1Npj=1Npd(i+j)dp

let t=dp

=d=1np=1ndμ(p)i=1ntj=1ntd(i+j)t=d=1np=1ndμ(p)[i=1nt(dt)i]2

后一部分是 Θ(logn) 的等比数列求和。前面是 Θ(nlogn) 的调和级数。

可以证明是 Θ(nlogn) 的。你要说是 O(n114) 也没错。

P7575 「PMOI-3」公约数

题目中给出的形式不方便反演。不妨先考虑一个计数 dp。

f(i,j) 为考虑了前 i 个数,其中第 i 个数是 j 的合法方案数。

初值:f(1,j)=[x1j]

转移:

f(i,k)=xi1j[gcd(j,k)=xi1]f(i1,j)

直接开始莫反。

f(i,k)=xi1j[gcd(j,k)=xi1]f(i1,j)=j=1mxi1[gcd(j,kxi1)=1]f(i1,jxi1)=j=1mxi1f(i1,jxi1)pj,pkxi1μ(p)=pkxi1μ(p)pxi1kf(i1,k)

注意到这是一个 Dirichlet 前/后缀和的形式,我们在 dp 时维护它即可。时间复杂度 Θ(mlogmloglogm)

P1829 [国家集训队] Crash的数字表格 / JZPTAB

i=1nj=1mlcm(i,j)

s(x)=12x(x+1)

i=1nj=1mlcm(i,j)=i=1nj=1mijgcd(i,j)=i=1nj=1mijd=1n[d=gcd(i,j)]1d=d=1ni=1ndj=1mdijd[gcd(i,j)=1]=d=1ndi=1ndj=1mdijki,kjμ(k)=d=1ndk=1ndμ(k)k2i=1nkdj=1mkdij=d=1ndk=1ndμ(k)k2s(nkd)s(mkd)

let t=kd,有

=t=1ns(nt)s(mt)dtdμ(td)(td)2=t=1nts(nt)s(mt)dtμ(td)(td)

考虑 μId 的求法。

n=1 时,显然为 1

nP 时,显然有 f(n)=1p

imody=0 时,显然有 f(n)=f(i)

否则 f(n)=f(i)f(y)。然后就做完了。

P6156 简单题

i=1nj=1n(i+j)kf(gcd(i,j))gcd(i,j)

其中 f(n)=[pP,p2n]

i=1nj=1n(i+j)kf(gcd(i,j))gcd(i,j)=i=1nj=1n(i+j)kdi,dj[d=gcd(i,j)]df(d)=d=1ndk+1f(d)i=1ndj=1nd(i+j)k[gcd(i,j)=1]=d=1ndk+1f(d)i=1ndj=1nd(i+j)kpi,pjμ(p)=d=1ndk+1f(d)p=1ndμ(p)pki=1npdj=1npd(i+j)k

let s(n)=i=1nj=1n(i+j)kt=pd,此外不难发现 f(n)=μ(n)2

不难发现

=d=1ndk+1μ(d)2p=1ndμ(p)pks(npd)=t=1ns(nt)dtdk+1μ(d)2μ(td)(td)k=t=1ns(nt)dtdμ(d)2μ(td)tk

考虑令 g(n)=dndμ(d)2μ(nd)nk。不难证明其为积性函数。

对于 s(n),令 p(n)=i=1nikq(n)=i=1np(n),不难观察到

s(n)=i=1n[p(n+i)p(i)]=q(2n)2q(n)

然后就做完了。

GCDMAT2 - GCD OF MATRIX (hard)

i=i1i2j=j1j2gcd(i,j)

数据组数 T5×104i2,j2106

P7486 「Stoi2031」彩虹

i=lrj=lrlcm(i,j)lcm(i,j)mod32465177

化式子。我们只需要考虑 i=1nj=1m 的情况,理由显然。

i=1nj=1mlcm(i,j)lcm(i,j)=d=1ni=1ndj=1md(ijd)ijd[d=gcd(i,j)]=d=1np=1ndi=1npdj=1mpd(ijdp2)ijdp2μ(p)

不妨记 s(n)=n(n+1)2

我们有

i=1nj=1m(ij)ij=i=1nj=1m(ii)j(jj)i=[i=1nii]s(m)[i=1mii]s(n)

记为 F(n,m)

而且我们有

i=1nj=1mtij=ts(n)s(m)

=d=1np=1ndi=1npdj=1mpd(ijdp2)ijdp2μ(p)=d=1np=1nd[i=1npdj=1mpd(ij)ij(dp2)ij]dp2μ(p)=d=1np=1nd[F(npd,mpd)(dp2)s(npd)s(mpd)]dp2μ(p)

不妨令 dp=t。记 g(n)=dndμ(d)h(n)=dnddμ(d)

我们得到

=t=1npt[F(nt,mt)(tp)s(nt)s(mt)]tpμ(p)=t=1n[[F(nt,mt)ts(nt)s(mt)]ptpμ(p)(ptppμ(p))s(nt)s(mt)]t=t=1n[[F(nt,mt)ts(nt)s(mt)]g(t)h(t)s(nt)s(mt)]t=y=1nF(nt,mt)tg(t)[tg(t)h(t)]ts(nt)s(mt)

再令 G(t)=tg(t)H(t)=[tg(t)h(t)]t。于是

=y=1nF(nt,mt)G(t)H(t)s(nt)s(mt)

讨论一下乘法的数论分块。

设极长的区间为 [l,r],则对答案的贡献为

F(nl,ml)sumG(r)sumG(l1)[mulH(r)mulH(l1)]s(nt)s(mt)

然后我们需要预处理出 F,G,H。然后《就》做完了。

回顾一下 F(n,m),G(n),H(n) 的定义。

F(n,m)=[i=1nii]s(m)[i=1mii]s(n)

实际上只需要预处理 f(n)=i=1nii,那么 F(n,m)=f(n)s(m)f(m)s(n)

G(n)=ndndμ(d)

H(n)=[ng(n)h(n)]n

对于 g(n)h(n),我们可以通过枚举倍数在 Θ(nlnn) 的时间内预处理出。于是 GH 是好求的。

于是我们在 Θ(nlogn+nlogn) 的时间内解决了本题。

现在是 16:46,我看我什么时候写完。

Update:2.7 13:15 AC 了此题。

注意什么时候对 p 取模,什么时候对 (p1) 取模。

P3704 [SDOI2017] 数字表格

i=1nj=1mf(gcd(i,j))

其中 f(i) 代表 Fibonacci 数列的第 i 项。

简单反演一下。

i=1nj=1mf(gcd(i,j))=i=1nj=1mdi,djf(d)[d=gcd(i,j)]=d=1nj=1ndj=1mdf(d)[gcd(i,j)=1]=d=1np=1ndj=1npdj=1mpdf(d)μ(p)=t=1n[dpf(d)μ(td)]s(nt)s(mt)

时间复杂度 Θ(Tnlogp+nlnnlogp)

P3312 [SDOI2014] 数表

TODO。

P6271 [湖北省队互测2014] 一个人的数论

好题。

此处的 k 指的是是题目中的 d

fk(n) 为所有小于 n 且与 n 互素的正整数的 k 次方和,求

fk(n)mod109+7

给定 n 的素因数分解式。记 w 为素因数个数,ai 为因数次数。k102w103pi109ai109

即为 i=1n[gcd(i,n)=1]ik。不妨记 sk(n)=i=1nik=i=0k+1aini

i=1n[gcd(i,n)=1]ik=i=1nikdi,dnμ(d)=dnμ(d)j=1nd(jd)k=dnμ(d)dksk(nd)=dnμ(d)dki=0k+1ai(nd)i=dnμ(d)dki=0k+1ainidi=i=0k+1ainidnμ(d)dki

显然 μ(d)dki 是一个积性函数。于是有

=i=0k+1ainij=1wl=0ajμ(pjl)pjl(ki)

注意到当且仅当 l1 时,μ(pjl)pjl(ki)0。于是不难化为

=i=0k+1ainij=1w(1pjki)

系数 ai 可以暴力算出,是 Θ(k3) 的。

总时间复杂度 Θ(k3+kw)

P6810 「MCOI-02」Convex Hull 凸包

i=1nj=1mσ0(i)σ0(j)σ0(gcd(i,j))

n,m2×106

σ0 表示因数个数函数。

我们可以简单反演一下

i=1nj=1mσ0(i)σ0(j)σ0(gcd(i,j))=i=1nj=1mσ0(i)σ0(j)di,djσ0(d)[d=gcd(i,j)]=d=1nσ0(d)i=1ndi=1mdσ0(id)σ0(jd)[gcd(i,j)=1]=d=1nσ0(d)p=1ndμ(p)i=1npdi=1mpdσ0(ipd)σ0(jpd)=t=1ndtσ0(d)μ(td)i=1ntσ0(it)j=1mtσ0(jt)

然后你会发现中间有个卷积是可以线性调和地算的。然后你还会发现后面也是一个线性调和的枚举。

所以总复杂度 Θ(nlogn)

[AGC038C] LCMs / P3911 最小公倍数之和

给定数列 a。求

i=1nj=1nlcm(ai,aj)

n2×1051ai106

不妨记 N=106

i=1nj=1nlcm(ai,aj)=i=1nj=1ndai,daj[d=gcd(ai,aj)]aiajd=d=1Nd(i=1Ndj=1Ndcntidcntjd[gcd(i,j)=1]ij)=d=1Ndp=1Ndp2μ(p)i=1Npdj=1Npdcntipdcntjpdij=t=1Ntptpμ(p)i=1Ntj=1Ntcntitcntjtij

时间复杂度 Θ(nlogn)

P4240 毒瘤之神的考验

i=1nj=1mφ(ij)

998,422,353 取模。n,m105T104

我们有

φ(ij)=φ(i)φ(j)gcd(i,j)φ(gcd(i,j))

(证明见 φ 函数性质部分)

代入得到

i=1nj=1mφ(ij)=d=1ndφ(d)i=1ndj=1mdφ(id)φ(jd)[gcd(i,j)=1]=d=1ndφ(d)p=1ndμ(p)i=1npdj=1mpdφ(ipd)φ(jpd)=t=1ndtdφ(d)μ(td)i=1ntj=1mtφ(it)φ(jt)

至此我们已经做到了单次询问 Θ(nlogn)

不妨设 f(n)=dndφ(d)μ(nd)g(n,t)=i=1nφ(it)。于是答案等价于

t=1nf(t)g(nt,t)g(mt,t)

我们可以在 Θ(nlogn) 时间内对 t[1,n]i[1,mt] 求出 g(i,t)。于是单次询问复杂度降为 Θ(n),仍不能接受。

观察到 nt 具有数论分块特征。于是构造函数

h(n,m,d)=i=1df(i)g(ni,i)g(mi,i)

于是最终的答案可以表示为

[h(nl,ml,r)h(nl,ml,l1)]

如果预处理出全部的 h,显然预处理超时。否则询问超时。于是想到设一个阈值 Si,j[1,S]d[1,mmax(i,j)] 预处理出所有的 h(i,j,d)。这是 Θ(nS2) 的。

本题中 Θ(nlogn) 预处理 g(i,t),体现了 调和之美;设阈值进行平衡,体现了 平衡之美

[CmdOI2019] 简单的数论题

i=1nj=1mφ(lcm(i,j)gcd(i,j))

23,333 取模。T3×104n,m5×104

套路地进行反演。

i=1nj=1mφ(lcm(i,j)gcd(i,j))=d=1ni=1ndj=1mdφ(ij)[gcd(i,j)=1]=d=1ni=1ndj=1mdφ(i)φ(j)[gcd(i,j)=1]=d=1np=1ndμ(p)i=1npdj=1mpdφ(ip)φ(jp)=t=1nptμ(p)i=1ntj=1mtφ(ip)φ(jp)

g(n,p)=i=1nφ(ip)。则原式化为

=t=1nptμ(p)g(nt,p)g(mt,p)

我们不难套路地 Θ(nlogn) 预处理出 g

那么,设 f(x,a,b)=pxμ(p)g(a,p)g(b,p)

如果预处理出所有的 f(x,a,b),时空都承受不了。注意当 xn 的时候,a,bn,所以我们可以设一个阈值 B,对 xB 预处理所有 xBf 不妨将阈值设为 n,这样空间复杂度是 Θ(nn) 的,时间则是 Θ(nnlogn) 的。

然后对 x<B 的部分,我们暴力算,这样是 Θ(nlogn) 的;对于 x>B 的部分,我们直接数论分块,这样是 n 的。综上,我们在单次询问 Θ(nlogn) 的时间内解决了本题。

[MarsOJ 24JAN A] phi

i=1nj=1nφ(gcd(φ(i),φ(j)))

n1072s,512MB

f(i)=k=1n[φ(k)=i]。问题转化为

i=1nj=1nf(i)f(j)φ(gcd(i,j))=i=1nj=1ndi,dj[d=gcd(i,j)]f(i)f(j)φ(d)=d=1nφ(d)i=1ndj=1ndf(id)f(jd)[gcd(i,j)=1]=d=1nφ(d)p=1ndμ(p)(i=1ndpf(ipd))2

不妨记 g(t)=i=1ntf(it)

s(t)=1itnf(it)

=t=1ns(t)2dtφ(d)μ(td)

不妨记 g=μφ。线性调和地预处理即可。

答案即为

i=1ns(i)2g(i)

时间复杂度 Θ(nlogn)

P4619 [SDOI2018] 旧试题

i=1Aj=1Bk=1Cσ0(ijk)

A,B,C105

我们有结论

σ0(a1a2an)=d1a1d2a2dnan[ij,gcd(di,dj)=1]

代入有

i=1Aj=1Bk=1Cσ0(ijk)=i=1Axij=1Byjk=1Czk[ε(gcd(x,y))][ε(gcd(x,z))][ε(gcd(y,z))]=x=1Ay=1Bz=1CAxByCz[ε(gcd(x,y))][ε(gcd(x,z))][ε(gcd(y,z))]=x=1Ay=1Bz=1CAxByCzux,uyμ(u)vx,vzμ(v)wy,wzμ(w)=u=1min(A,B)v=1min(A,C)w=1min(B,C)μ(u)μ(v)μ(w)x=1Ay=1Bz=1CAxByCz[ux,vx][uy,wy][vz,wz]=u=1min(A,B)v=1min(A,C)w=1min(B,C)μ(u)μ(v)μ(w)x=1Ay=1Bz=1CAxByCz[lcm(u,v)x][lcm(u,w)y][lcm(v,w)z]=u=1min(A,B)v=1min(A,C)w=1min(B,C)μ(u)μ(v)μ(w)lcm(u,v)x,xAAxlcm(u,w)y,yBBylcm(v,w)z,zCCz

注意到 dx,xnnx=i=1ndnid

f(d,n)=i=1ndnid=i=1ndndi,是不难预处理/快速查询的。代入得到

=u=1min(A,B)v=1min(A,C)w=1min(B,C)μ(u)μ(v)μ(w)f(lcm(u,v),A)f(lcm(u,w),B)f(lcm(v,w),C)

考虑什么样的三元组 (u,v,w) 会对答案有贡献。

  • μ(u),μ(v),μ(w)0
  • lcm(u,v),lcm(u,w),lcm(v,w)max(A,B,C)

这个三元组对答案贡献为 μ(u)μ(v)μ(w)f(lcm(u,v),A)f(lcm(u,w),B)f(lcm(v,w),C)。所以我们可以转化为求三元环。

现在压力给到建图。朴素的建图是 Θ(n3) 的。不过我们不难枚举 x=gcd(u,v)。令 u=ix,v=jx,当 gcd(i,j)=1lcm(u,v)=ijx2x=ijxmax(A,B,C) 时连边 (u,v)

边数不超过 8×105 条,利用求解三元环的方法可以在 Θ(mm) 内解决本题。

P6860 象棋与马

题意省略。

P3598 Koishi Loves Number Theory

Starrykiller loves number theory

题意省略。

很厉害的题。

转化一下题意,由于题目保证了 x1(mod109+7),设 f(n)=xn+11x1

我们有如下引理。

引理

gcd(xa1,xb1)=xgcd(a,b)1

P7360 「JZOI-1」红包

推式子。

i1=1nik=1nlcm(i1,,ik)=i1=1nik=1nS{1,,k}gcd({ix:xS})(1)|S|1=j=1ki1,,ijgcd(i1,,ij)(1)j1nkj=j=1ki1,,ijdgcd(i1,,ij)d(1)j1(kj)nkj[gcd(i1,,ij)=d]=j=1kd=1nd(1)j1(kj)nkji1,,ij[gcd(i1,,ij)=d]=j=1kd=1nd(1)j1(kj)nkjp=1ndμ(p)ndpj=j=1kd=1np=1nd(dμ(p))(1)j1(kj)nkjndpj=[j=1kd=1np=1nd(dμ(p))(1)j(kj)nkjndpj]1=[t=1nf(t)j=1k(1)j(kj)nkjntj]1=[t=1nf(t)j=0k(1)j(kj)nkjntjnk]1=[t=1nf(t)(nnt)knk]1

其中

f(t)=dtdμ(nt)

不难发现可以整除分块求解,时间复杂度 Θ(Tnlogn)

本题 k 很大,f(t) 的指数需要对 φ(p) 取模,那么 k 就要应用扩展欧拉定理对 φ(φ(p)) 取模,细节比较多。

P8570 [JRKSJ R6] 牵连的世界

i=1nj=1mσ0(ij)φ(ij)

(109+7) 取模。n,m3×106

推式子。

引理

σ0(ij)=dgcd(i,j)μ(d)σ0(id)σ0(jd)

证明

σ0(ij)=xiyj[gcd(x,y)=1]=xiyjdx,dyμ(d)=di,djμ(d)dx,xi1dy,yj1=di,djμ(d)xid1yjd1=di,djμ(d)σ0(id)σ0(jd)

引理

φ(ij)=φ(i)φ(j)gcd(i,j)φ(gcd(i,j))

证明 见上。(P4240)

i=1nj=1mσ0(ij)φ(ij)=i=1nj=1mφ(i)φ(j)gcd(i,j)φ(gcd(i,j))dgcd(i,j)μ(d)σ0(id)σ0(jd)=i=1nj=1mφ(i)φ(j)pi,pj[p=gcd(i,j)]pφ(p)dpμ(d)σ0(id)σ0(jd)=p=1npφ(p)i=1npj=1mp[gcd(i,j)=1]φ(ip)φ(jp)dpμ(d)σ0(ipd)σ0(jpd)=p=1npφ(p)t=1npμ(t)i=1nptj=1mptφ(ipt)φ(jpt)dpμ(d)σ0(iptd)σ0(jptd)=p=1npφ(p)t=1npμ(t)dpμ(d)[i=1nptφ(ipt)σ0(iptd)][j=1mptφ(jpt)σ0(jptd)]

不妨记 f(n,x,d)=i=1nxφ(ix)σ0(ixd)。则原式化为

p=1npφ(p)t=1npμ(t)dpμ(d)f(n,pt,d)f(m,pt,d)=d=1ndμ(d)p=1ndpφ(dp)t=1npdμ(t)f(n,ptd,d)f(m,ptd,d)

y=dp

y=1ndydμ(d)ydφ(y)t=1nyμ(t)f(n,ty,d)f(m,ty,d)=y=1nyφ(y)dyμ(d)t=1nyμ(t)f(n,ty,d)f(m,ty,d)=d=1nμ(d)dyyφ(y)t=1nyμ(t)f(n,ty,d)f(m,ty,d)

注意到,首先我们只需要枚举所有 μ(d)0d。其次,对于每个 d 而言,我们可以预处理出 f(n,x,d)f(m,x,d),其中 dx。所以时间复杂度应该是对的。事实上这样子可以通过 n5×105 的数据,拿到 100 分。但是我们不应该止步于此。

换个思路。(TODO)

i=1nj=1mσ0(ij)φ(i)φ(j)gcd(i,j)φ(gcd(i,j))=i=1nj=1mσ0(ij)di,dj[gcd(i,j)=d]φ(i)φ(j)φ(d)d=d=1ndφ(d)i=1ndj=1mdσ0(ijd2)φ(id)φ(jd)=d=1ndφ(d)didjφ(i)φ(j)σ0(ij)=d=1ndφ(d)didjφ(i)φ(j)xiyj[gcd(x,y)=1]

P5518 [MtOI2019] 幽灵乐团 / 莫比乌斯反演基础练习题

推式子毕业题。

给定正整数 A,B,C,对于 x{1,2,3},分别求出

i=1Aj=1Bk=1C(lcm(i,j)gcd(i,k))f(x)

其中

f(0)=1f(1)=ijkf(2)=gcd(i,j,k)

对素数 p 取模。

1A,B,C105107p1.05×109pPT70

首先不难发现本质上就是求

F(A,B,C)=i=1Aj=1Bk=1Cgcd(i,j)f(x)

G(A,B,C)=i=1Aj=1Bk=1C(ij)f(x)

然后答案就是 G(A,B,C)F(A,B,C)F(A,C,B)

考虑 f(0)

先求 F(A,B,C)。首先你会发现 C 是几乎没用的(可以先忽略,最后取结果的 C 次方),所以设 F(A,B,C)=F(A,B)CG(A,B) 同理。

F(A,B)=i=1Aj=1Bgcd(i,j)=d=1Ai=1Adi=1Bdφ(d)=d=1Aφ(d)AdBd

考虑 f(1)

即,求出

f(A,B,C)=i=1Aj=1Bk=1Cgcd(i,j)ijk

g(A,B,C)=i=1Aj=1Bk=1C(ij)ijk

然后答案就是

g(A,B,C)f(A,B,C)f(A,C,B)

不妨记 s(C)=i=1Ci。考虑 f(A,B,C)

以下默认 AB

f(A,B,C)=k=1C(i=1Aj=1Bgcd(i,j)ij)k=(i=1Aj=1Bdi,djdij[d=gcd(i,j)])s(C)=(d=1Add2i=1Adj=1Bdij[gcd(i,j)=1])s(C)=(d=1Add2p=1Adμ(p)p2i=1Apdj=1Bpdij)s(C)=(d=1Add2p=1Adμ(p)p2s(Apd)s(Bpd))s(C)

考虑 f(2)

f(A,B,C)=i=1Aj=1Bk=1Cgcd(i,j)gcd(i,j,k)

g(A,B,C)=i=1Aj=1Bk=1C(ij)gcd(i,j,k)

考虑 f(A,B,C)

f(A,B,C)=i=1Aj=1Bk=1Cgcd(i,j)gcd(i,j,k)=d=1Adk=1Cgcd(d,k)i=1Adj=1Bd[gcd(i,j)=1]=d=1Adk=1Cgcd(d,k)p=1Adμ(p)ApdBpd=d=1Adk=1Ctk,tdφ(t)p=1Adμ(p)ApdBpd=d=1Adk=1Ctk,tdφ(t)p=1Adμ(p)ApdBpd=t=1Ad=1At(td)φ(t)Ctp=1Atdμ(p)AptdBptd

考虑优化,不妨令 x=td

=x=1Axtxφ(t)Ctp=1Axμ(p)ApxBpx

P1587 [NOI2016] 循环之美

声明:我们交换题面中的 n,m

不难发现答案为

i=1n[gcd(i,k)=1]j=1m[gcd(i,j)=1]

先第一次莫反。

i=1n[gcd(i,k)=1]j=1m[gcd(i,j)=1]=i=1n[gcd(i,k)=1]j=1mdi,djμ(d)=d=1nμ(d)mdi=1nd[gcd(id,k)=1]=d=1nμ(d)mdi=1nd[gcd(i,k)=1][gcd(d,k)=1]=d=1n[gcd(d,k)=1]μ(d)mdi=1nd[gcd(i,k)=1]=d=1n[gcd(d,k)=1]μ(d)mdpkμ(p)ndp

f(n)=[gcd(n,k)=1]μ(n)g(n)=pkμ(p)np。则答案化为

d=1nf(d)mdg(nd)

注意到 k2000,本质不同的素因子 ω(k)4,那么 μ0 的因数最多为 2ω(k)16,于是 g 是好算的。

如果我们能够维护出 f 的前缀和,就可以直接应用数论分块。数据范围很大,考虑杜教筛。注意到 f=ε(gcd)μ 是完全积性函数,那么把它和 h=ε(gcd) 卷起来,可以得到 s=ε(gcd)εs 函数是好求的,考虑怎么求 h 的区间和。

注意到

i=lrh(i)=dkμ(d)(rdl1d)

(简单容斥)。于是 h 的区间和也在 2ω(k) 内完成了。

综上,我们在 Θ(n232ω(k)) 的时间内解决了本题。

P4464 [国家集训队] JZPKIL

爆推式子。

i=1ngcd(i,n)xlcm(i,n)y=nyi=1ngcd(i,n)xyiy=nyi=1niydn,di[gcd(i,n)=d]dxy=nydndxyi=1niy[di][gcd(i,n)=d]=nydndxi=1ndiy[gcd(id,n)=d]=nydndxi=1ndiy[gcd(i,nd)=1]=nydndxi=1ndiypi,pndμ(p)=nydndxpndμ(p)i=1ndiy[pi]=nydndxpndμ(p)pyi=1ndpiy

不妨记 sk(n)=i=1nik。套路地令 t=dp,易知

=nydndxpndμ(p)pysy(ndp)=nytnsy(nt)ptμ(p)py(tp)x=nytnsy(nt)txptμ(p)pyx

不妨设 sy(x)=i=0y+1aixi。代入得到

=nytntxptμ(p)pyxi=0y+1ai(nt)i=nyi=0y+1aitntx(nt)iptμ(p)pyx

f=Idx(μIdyx)1,那么 tn 那一堆实际上就是 fIdi

那么我们可以将积性函数拆成素数幂乘积的形式。

具体地说,

=nyi=0y+1ai(fIdi)(n)=nyi=0y+1aipαna+b=αf(pa)pbi=nyi=0y+1aipαna=01f(pa)p(αa)i

至于 sy,你可以用自己喜欢的算法求(Bernoulli 数,Stirling 数)。

还需要进行素因数分解,总时间复杂度 Θ(Tn0.25+T(能过))(?)

P5176 公约数

在本题中,记 (a,b)=gcd(a,b)

给定 A,B,C,求

i=1Aj=1Bk=1C(ij,ik,jk)(i,j,k)((i,j)(i,k)(j,k)+(i,k)(i,j)(j,k)+(j,k)(i,j)(i,k))

(109+7) 取模。1A,B,C2×107T103

引理 1

(ij,ik,jk)=(i,j)(j,k)(i,k)(i,j,k)

证明

对于任意素数 p,设 i,j,k 的指数为 a,b,c,不失一般性,设 abc

代入可以得到 min(a+b,a+c,b+c)=min(a,b)+min(a,c)+min(b,c)min(a,b,c),显然成立。

证毕。

代入得到

i=1Aj=1Bk=1C(ij,ik,jk)(i,j,k)((i,j)(i,k)(j,k)+(i,k)(i,j)(j,k)+(j,k)(i,j)(i,k))=i=1Aj=1Bk=1C(i,j)(j,k)(i,k)((i,j)(i,k)(j,k)+(i,k)(i,j)(j,k)+(j,k)(i,j)(i,k))=i=1Aj=1Bk=1C[(i,j)2+(i,k)2+(j,k)2]

f(A,B)=i=1Aj=1B(i,j)2,则原式为

=Cf(A,B)+Bf(A,C)+Af(B,C)

考虑 f(A,B)。不难发现

f(A,B)=i=1Aj=1Bdi,djd2[d=(i,j)]=d=1Ad2i=1Adj=1Bd[(i,j)=1]=d=1Ad2p=1Adμ(p)ApdBpd=t=1AAtBtdtd2μ(td)

不难发现右边就是 (Id2μ)(t)J2),不难类似 phi 预处理。利用数论分块,我们在 Θ(TV+V) 的时间复杂度内解决了本题。

启示:遇到 gcd 的题目,可以考虑从唯一分解上找性质。

P10182 一径入繁华

新鲜出炉的数论题。

“数论所生,繁华之地。”

定义 n×n 矩阵 A

Ai,j=dgcd(i,j)μ(gcd(i,j)d)×(σ0(ds))t

求出 detAn1011,对 (109+7) 取模。

参考文献

OI-wiki

本文作者:Starrykiller

本文链接:https://www.cnblogs.com/Starrykiller/p/18016231/mobius-inversion

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Starrykiller  阅读(223)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.