莫比乌斯函数&欧拉函数&筛法 综合运用

前置知识

顺序有先后,但是不是完全的次序,建议确认全部都会再食用本篇。

线性筛

详见线性筛

整除分块

详见整除分块

狄利克雷卷积

详见数论函数&狄利克雷卷积

欧拉函数

详见欧拉函数

莫比乌斯函数

详见莫比乌斯函数&莫比乌斯反演

杜教筛

详见杜教筛

基础应用

最基础的一些题目。

基础知识

(求sumlimits_{i=1}^mn\%i)

问题

[large sumlimits_{i=1}^mn\%i ]

结论

[large nm-sumlimits_{i=1}^mi imes lfloorfrac ni floor ]

分析

求:

[large sumlimits_{i=1}^mn\%i=sumlimits_{i=1}^m(n-lfloorfrac ni floor imes i)=nm-sumlimits_{i=1}^mi imes lfloorfrac ni floor ]

然后直接整除分块即可。

(求sumlimits_{i=1}^{n}sumlimits_{j=1 land i ot = j}^{m}(n mod i)(m mod j))

结论

[large=sum_{i=1}^{n}sum_{j=1}^{m}(n-{left lfloor frac{n}{i} ight floor}i)(m-{left lfloor frac{m}{j} ight floor}j)-sum_{i=1}^{min(n,m)}(nm+{left lfloor frac{n}{i} ight floor}{left lfloor frac{m}{i} ight floor}i^2-(m{left lfloor frac{n}{i} ight floor}+n{left lfloor frac{m}{i} ight floor})i) ]

于是直接数论分块即可。

分析

[large sumlimits_{i=1}^{n}sumlimits_{j=1 land i ot = j}^{m}(n mod i)(m mod j) ]

[large =sum_{i=1}^{n}sum_{j=1}^{m}(n-{left lfloor frac{n}{i} ight floor}i)(m-{left lfloor frac{m}{j} ight floor}j)-sum_{i=1}^{min(n,m)}(n-{left lfloor frac{n}{i} ight floor}i)(m-{left lfloor frac{m}{i} ight floor}i) ]

[large=sum_{i=1}^{n}sum_{j=1}^{m}(n-{left lfloor frac{n}{i} ight floor}i)(m-{left lfloor frac{m}{j} ight floor}j)-sum_{i=1}^{min(n,m)}(nm+{left lfloor frac{n}{i} ight floor}{left lfloor frac{m}{i} ight floor}i^2-(m{left lfloor frac{n}{i} ight floor}+n{left lfloor frac{m}{i} ight floor})i) ]

然后数论分块即可。

(求sumlimits_{i=1}^nsumlimits_{j=1}^m(i+j)^k)

(large S(n,m)=sumlimits_{i=1}^nsumlimits_{j=1}^m(i+j)^k)

如果我们考虑枚举 ((i+j)) 的和,设 (large F(n)=sumlimits_{i=1}^ni^k)

[large S(n,m)=sumlimits_{i=m+1}^{n+m}sumlimits_{j=1}^ij^k-sumlimits_{i=1}^{n}sumlimits_{j=1}^i=sumlimits_{i=m+1}^{n+m}F(i)-sumlimits_{i=1}^{n}F(i)=sum_{i=1}^{n+m}F(i)-sumlimits_{i=1}^{n}F(i)-sumlimits_{i=1}^{m}F(i) ]

那么设 (large G(n)=sumlimits_{i=1}^nF(i)) ,有 (large S(n,m)=G(n+m)-G(n)-G(m))

于是我们直接线性筛每一个数的 (k) 次幂,然后做二阶前缀和即可得到 (G)

莫比乌斯函数&莫比乌斯反演

(求sumlimits_{i=1}^nsumlimits_{j=1}^m[(i,j)=d])

问题

[large sumlimits_{i=1}^nsumlimits_{j=1}^m[gcd(i,j)=d] ]

结论

[large g(d)=sumlimits_{t=1}^{min(n,m)} mu(t) lfloordfrac n{td} floorlfloor dfrac m{td} floor ]

分析

也就是一般有这样的套路,设函数 (g(d)) 为:

[large g(d)=sumlimits_{i=1}^nsumlimits_{j=1}^m[gcd(i,j)=d] ]

这时我们可以观察我们的函数 (f)

[large f(d)=sumlimits_{dmid n}g(n)=sumlimits_{dmid n}sumlimits_{i=1}^Nsumlimits_{j=1}^M[gcd(i,j)=d] ]

发现这时的 (f) 函数性质非常好,就相当于取两个数使得他们都是 (d) 的倍数,可以直接写出:

[large f(d)=lfloordfrac Nd floorlfloor dfrac Md floor ]

然后我们尝试通过莫比乌斯反演来求出 (g) 就是利用 (f)

[large g(n)=sumlimits_{n|d} mu(frac{d}{n}) f(d) ]

那么就是:

[large g(n)=sumlimits_{n|d} mu(frac{d}{n}) lfloordfrac Nd floorlfloor dfrac Md floor ]

然后我们换成直接枚举这个倍数 (large t=frac dn)

[large g(n)=sumlimits_{t=1}^{{min(N,M)}}mu(t) lfloordfrac N{tn} floorlfloor dfrac M{tn} floor ]

那么对于这个柿子可以应用整除分块来处理后半部分,然后预处理一下 (mu) 的前缀和即可在 (sqrt{N}) 的复杂度做到 (O(n)) 预处理的单次询问

注意这里的整除分块:

其实我们不是按照 (tn) 来分块(这样我就不会处理 (mu) 里面的东西了),而是 (t) 来分块。

要把柿子转化成这样:

[large g(n)=sumlimits_{t=1}^{min(N,M)} mu(t) lfloordfrac{lfloorfrac N{t} floor}{n} floorlfloordfrac{lfloorfrac M{t} floor}{n} floor ]

然后这个时候以 (t) 来分块看上去就很没有问题了,因为变量只有 (t) ,和 (n) 没有关系,我们只关注分子的变化即可。

接下来可以注意这样的分块,其实就等价于 (N,M) 都来分块,分了很多个隔板,然后块的个数也就是 (2sqrt{N}) 级别了。

也就是每次取 (r) 的时候取两者算出来较小的右端点。

(求sumlimits_{d is prime}sumlimits_{i=1}^nsumlimits_{j=1}^m[(i,j)=d])

问题

也就是求:

[large sumlimits_{d is prime}sumlimits_{i=1}^nsumlimits_{j=1}^m[gcd(i,j)=d] ]

结论

[large sumlimits_{d=1}^{min(n,m)} lfloordfrac nd floorlfloor dfrac md floorsumlimits_{kmid d,k is prime}mu(frac{d}{k}) ]

分析

根据结论,那么直接把后半写成:

[large sumlimits_{k is prime}sumlimits_{k|d} mu(frac{d}{k}) lfloordfrac nd floorlfloor dfrac md floor ]

然后转为枚举 (d)

[large sumlimits_{d=1}^{min(n,m)} lfloordfrac nd floorlfloor dfrac md floorsumlimits_{kmid d,k is prime}mu(frac{d}{k}) ]

那么最后那个柿子可以通过一点小办法处理出来,然后前面就是整除分块。

后面那个可以这样做:考虑每一个质数 (k) ,对于 (k) 的倍数 (T) ,将它的值加上 $ mu(frac{T}{k})$

(求sumlimits_{i=1}^nsumlimits_{j=1}^m(i,j))

问题

求:

[large sumlimits_{i=1}^nsumlimits_{j=1}^m(i,j) ]

结论

[large sumlimits_{k=1}^{min(i,j)}ksumlimits_{t=1}^{min(n,m)} mu(t) lfloordfrac n{tk} floorlfloor dfrac m{tk} floor ]

分析

[large egin{split} sumlimits_{i=1}^nsumlimits_{j=1}^m(i,j) &=sumlimits_{k=1}^{min(n,m)}ksumlimits_{i=1}^nsumlimits_{j=1}^m[gcd(i,j)=k]\ &=sumlimits_{k=1}^{min(n,m)}ksumlimits_{t=1}^{min(n,m)} mu(t) lfloordfrac n{tk} floorlfloor dfrac m{tk} floor end{split} ]

然后把后半部分整除分块,使用 (mu) 的前缀和处理即可。

(求sumlimits_{i=1}^nsumlimits_{j=1}^m(i,j)^k)

稍微推一下吧:

[large egin{split} & sum_{i=1}^nsum_{j=1}^mgcd(i,j)^k\ &=sum_{i=1}^nsum_{j=1}^msum_{dvert gcd(i,j)} d^k[gcd(frac id,frac jd)=1]\ &=sum_{d=1}^{min(n,m)}d^ksum_{i=1}^{lfloorfrac nd floor}sum_{j=1}^{lfloorfrac md floor}[gcd(i,j)=1]\ &=sum_{d=1}^{min(n,m)}d^ksum_{k=1}^{lfloorfrac{min(n,m)}{d} floor}mu(k)lfloorfrac n{kd} floorlfloorfrac m{kd} floor end{split} ]

后面那个东西其实就是一个数论分块,前面的就是 (id^k) ,根据狄利克雷卷积的性质,显然可以也是个积性函数,再加上求 (d) 为质数的复杂度在 (ln) 以内,所以可以线性筛。

(求sumlimits_{i=1}^{n}sumlimits_{j=1}^{m}ij[(i,j)=1])

问题

[large egin{split} sum_{i=1}^{n}sum_{j=1}^{m}ij[(i,j)=1]\ end{split} ]

结论

(large G(x)=dfrac{x(x+1)}{2})

[large sum_{d=1}^{n}mu(d)cdot d^2cdot G(lfloorfrac nd floor)G(lfloorfrac md floor) ]

分析

这里没有使用莫比乌斯反演而是直接用 (large mu*I=varepsilon) 的性质:

[large egin{split} S(n,m) &=sum_{i=1}^{n}sum_{j=1}^{m}ij[gcd(i,j)=1]\ &=sum_{i=1}^{n}sum_{j=1}^{m}ijsum_{dvert gcd(i,j)}mu(d)\ &=sum_{d=1}^{n}mu(d)cdot d^2sum_{i=1}^{lfloorfrac nd floor}sum_{j=1}^{lfloorfrac md floor}ij\ &=sum_{d=1}^{n}mu(d)cdot d^2sum_{i=1}^{lfloorfrac nd floor}isum_{j=1}^{lfloorfrac md floor}j\ &=sum_{d=1}^{n}mu(d)cdot d^2cdot G(lfloorfrac nd floor)G(lfloorfrac md floor) end{split} ]

(求sumlimits_{i=1}^nsumlimits_{j=1}^mlcm(i,j))

问题

[large sum_{i=1}^nsum_{j=1}^mlcm(i,j) ]

结论

结论一:

[large sum_{d=1}^ndcdot sum_{k=1}^{lfloorfrac nd floor}mu(k)cdot k^2cdotdfrac {{lfloorfrac n{dk} floor}({lfloorfrac n{dk} floor}+1)}{2}dfrac {{lfloorfrac m{dk} floor}({lfloorfrac m{dk} floor}+1)}{2} ]

结论二:(进一步优化)

[large sum_{k=1}^nlfloorfrac nk floor^2sum_{dmid k}varphi(d)mu(frac kd) ]

分析

先将式子化简:

[large egin{split} sum_{i=1}^nsum_{j=1}^mlcm(i,j) &=sum_{i=1}^nsum_{j=1}^{m}sum_{dvert i,dvert j,gcd(frac id,frac jd)=1}frac {ij}{d}\ &=sum_{d=1}^ndsum_{i=1}^{lfloorfrac nd floor}sum_{j=1}^{lfloorfrac md floor}ij[gcd(i,j)=1]\ end{split} ]

这时我们单独计算后半部分,这里没有使用莫比乌斯反演而是直接用 (large mu*I=varepsilon) 的性质:(这部分其实就是上一个问题)

[large egin{split} S(n,m) &=sum_{i=1}^{n}sum_{j=1}^{m}ij[gcd(i,j)=1]\ &=sum_{i=1}^{n}sum_{j=1}^{m}ijsum_{dvert gcd(i,j)}mu(d)\ &=sum_{d=1}^{n}mu(d)cdot d^2sum_{i=1}^{lfloorfrac nd floor}sum_{j=1}^{lfloorfrac md floor}ij\ &=sum_{d=1}^{n}mu(d)cdot d^2sum_{i=1}^{lfloorfrac nd floor}isum_{j=1}^{lfloorfrac md floor}j\ &=sum_{d=1}^{n}mu(d)cdot d^2cdot G(lfloorfrac nd floor)G(lfloorfrac md floor) end{split} ]

其中,(large G(x)=frac {x(x+1)}{2}) ,表示等差数列求和。

很容易发现,对于 (large S) 函数,可以通过整除分块来计算,按照 (largelfloorfrac nd floor) 以及 (large lfloorfrac md floor) 来分块即可,前面的部分就是预处理一下前缀和即可。

现在代回原式子:

[large sum_{d=1}^ndcdot S({lfloorfrac nd floor},{lfloorfrac md floor}) ]

然后我们可以发现,原式还需要一次除法分块,而第二次除法分块将借助第一次的作为上界进行分块,这就是二次除法分块,这样做的复杂度可以证明是 (large O(n^{frac 34})) 的。

接下来考虑进一步优化:

[large sum_{d=1}^ndcdot sum_{k=1}^{lfloorfrac nd floor}mu(k)cdot k^2cdot G(lfloorfrac n{dk} floor)G(lfloorfrac m{dk} floor) ]

考虑枚举 (large dk)

[large sum_{d=1}^ndcdot sum_{dvert x}mu(frac xd)cdot (frac xd)^2cdot G(lfloorfrac n{x} floor)G(lfloorfrac m{x} floor) ]

交换求和符号(先枚举一个数再枚举其倍数等价于先枚举其倍数再枚举倍数的因数):

[large sum_{x=1}^n G(lfloorfrac n{x} floor)G(lfloorfrac m{x} floor)sum_{dvert x}mu(frac xd)cdot frac {x^2}d ]

考虑先枚举 (large frac xd)

[large sum_{x=1}^n G(lfloorfrac n{x} floor)G(lfloorfrac m{x} floor)sum_{kvert x}kxcdot mu(k) ]

直接把 (large x) 提出来:

[large sum_{x=1}^n G(lfloorfrac n{x} floor)G(lfloorfrac m{x} floor)xsum_{kvert x}kcdot mu(k) ]

于是后面那部分就是 (large F(x)=sumlimits_{dvert x}id(x)mu(x)) ,因为 (id)(mu) 都是积性函数,所以 (F) 也是积性函数。

所以可以考虑线性筛出来,前面部分就是一个整除分块,直接做即可。

时间复杂度是 (large O(V+msqrt{V})) ,其中 (V) 是值域,(m) 是询问次数,如果使用杜教筛可以优化到 (large O(V^{frac 23}+msqrt{V}))

(求sumlimits_{i=1}^nsumlimits_{j=1}^nvarphi(gcd(i,j)))

问题

[large sum_{i=1}^nsum_{j=1}^nvarphi(gcd(i,j)) ]

(large Tle 5000,nle 10^7)

结论

[large sum_{i=1}^nlfloor dfrac ni floor^2sum_{dmid i}varphi(d)mu(frac id) ]

分析

[large egin{split} sum_{i=1}^nsum_{j=1}^nvarphi(gcd(i,j)) &=sum_{d=1}^nsum_{i=1}^{lfloorfrac nd floor}sum_{j=1}^{lfloorfrac nd floor}varphi(d)[gcd(i,j)=1]\ &=sum_{d=1}^nvarphi(d)sum_{i=1}^{lfloorfrac nd floor}sum_{j=1}^{lfloorfrac nd floor}[gcd(i,j)=1]\ &=sum_{d=1}^nvarphi(d)sum_{t=1}^{lfloorfrac nd floor}mu(t)lfloorfrac n{dt} floor^2\ &=sum_{k=1}^nlfloorfrac nk floor^2sum_{dmid k}varphi(d)mu(frac kd) end{split} ]

一点说明:

第三步是莫比乌斯反演的结论,第四步是直接枚举 (dt) ,把那个可以整除分块的东西提出来。

容易发现后面的柿子是个卷积,两个都是积性函数,根据狄利克雷卷积的性质,整体也是积性函数,然后分析一下不难得出 (f(1),f(p),f(p^k)) 的值,于是可以线性筛,再做一下前缀和,前面的直接整除分块即可。

扩展:貌似还有其他做法,比如欧拉函数。

(求sumlimits_{i=1}^nsumlimits_{j=1}^md(ij))

问题

[large sum_{i=1}^nsum_{j=1}^md(ij) ]

(large n,m,tle 5 imes 10^4)

结论

上面柿子的结论:

[largesum_{d=1}^{min(n,m)}mu(d)sum_{i=1}^{lfloorfrac nd floor}lfloorfrac n{di} floorsum_{j=1}^{lfloorfrac md floor}lfloorfrac m{dj} floor ]

一个证明需要的重要结论:

[large d(ij)=sum_{xmid i}sum_{ymid j}[gcd(x,y)=1] ]

略证:

对于 (ij) 的质因子 (p) ,假设次数为 (c) ,设 (i) 中有 (a) 次,(j) 中有 (b)

接下来对于每一个 (p) 我们钦定如下选择:

如果 (cle a) ,那么我们就在 (i) 中直接选出 (p^c)(j) 中一个不选,这时两者相对 (p) 这个质因子来说是互质的(一个有一个没有嘛)

如果 (c>a) ,那么我们默认(i) 中选满 (a) 个,然后 (j) 中选择 (c-a) 个,这时,我们 (i) 选满,其实可以把这样的条件看作 (i) 一个没选(j) 选了 (c-a) 个,这样来说选出来的两个数还是互质的。

也就是说,对于每一个质因子的所有可能选择情况,都唯一对应了 (i,j) 中这个质因子的选择情况,这时如果我们把选满看作没选,那么相当于每一个都是要么 (i) 要么 (j) ,此时可以完全看作 (i,j) 互质,因为这样无论怎么选都有唯一对应关系。

分析

[large sum_{i=1}^nsum_{j=1}^md(ij)=sum_{i=1}^nsum_{j=1}^msum_{xmid i}sum_{ymid j}[gcd(x,y)=1]\ ]

然后可以转换成枚举 (x,y)

[large sum_{i=1}^nsum_{j=1}^md(ij)=sum_{i=1}^nsum_{j=1}^mlfloorfrac ni floorlfloorfrac mj floor[gcd(i,j)=1]\ ]

接下来设:

[large g(d)=sum_{i=1}^nsum_{j=1}^mlfloorfrac ni floorlfloorfrac mj floor[gcd(i,j)=d] ]

以及:

[large f(d)=sum_{dvert k}g(k)=sum_{dvert k}sum_{i=1}^nsum_{j=1}^mlfloorfrac ni floorlfloorfrac mj floor[gcd(i,j)=k] ]

那么考虑其对于 (d) 的意义:

[large f(d)=sum_{i=1}^nsum_{j=1}^mlfloorfrac ni floorlfloorfrac mj floor[dvert gcd(i,j)] ]

然后我们只枚举两者对于 (d) 的倍数:(也就是只枚举 (i,j) 都是 (d) 的倍数的数)

[large f(d)=sum_{i=1}^{lfloorfrac{n}{d} floor}sum_{j=1}^{lfloor frac{m}{d} floor}lfloorfrac n{di} floorlfloorfrac m{dj} floor ]

然后我们通过莫比乌斯反演写出 (g)

[large g(k)=sum_{kvert d}mu(frac dk)f(d)=sum_{kvert d}mu(frac dk)sum_{i=1}^{lfloorfrac{n}{d} floor}sum_{j=1}^{lfloor frac{m}{d} floor}lfloorfrac n{di} floorlfloorfrac m{dj} floor ]

然后因为这里我们只需要:

[large g(1)=sum_{d=1}^{min(n,m)}mu(d)sum_{i=1}^{lfloorfrac nd floor}sum_{j=1}^{lfloorfrac md floor}lfloorfrac n{di} floorlfloorfrac m{dj} floor=sum_{d=1}^{min(n,m)}mu(d)sum_{i=1}^{lfloorfrac nd floor}lfloorfrac n{di} floorsum_{j=1}^{lfloorfrac md floor}lfloorfrac m{dj} floor ]

注意后面两个柿子,有一个巧妙的处理,也就是预处理 (large sumlimits_{i=1}^xlfloorfrac xi floor) ,然后把 (large lfloorfrac nd floor) 看作 (x) 即可。

然后显然后面两个是按照 (large lfloorfrac nd floor)(large lfloorfrac md floor) 进行分块的,除法分块即可。

单次询问就是 (large sqrt{N}) 的。

欧拉函数&欧拉反演

(求 sumlimits_{i=1}^n{sumlimits_{j=1}^m}{(i,j)})

结论

[large sumlimits_{d=1}^{min(n,m)}{varphi{(d)}lfloordfrac{n}{d} floorlfloordfrac{m}{d} floor} ]

分析

[large sumlimits_{i=1}^n{sumlimits_{j=1}^m}{(i,j)}=sumlimits_{i=1}^n{sumlimits_{j=1}^m{sumlimits_{d|(i,j)}{varphi{(d)}}}}=sumlimits_{d=1}^{min(n,m)}{varphi{(d)}lfloordfrac{n}{d} floorlfloordfrac{m}{d} floor} ]

(求sumlimits_{p is prime} sumlimits_{i=1}^n sumlimits_{i=1}^n{[(i,j)=p]})

结论

[large sumlimits_{p is prime}2sumlimits_{i=1}^{lfloorfrac{n}{p} floor}{varphi(i)}-1 ]

分析

先给后面的 (i,j) 都除个 (p) ,然后根据欧拉函数的定义很容易得到这个柿子。

(求sumlimits_{i=1}^nsumlimits_{j=1}^m(gcd(i,j)-1)(n-i)(m-j))

结论

[large sumlimits_{d=1}^{min(n,m)}{varphi{(d)}sumlimits_{i=1}^{lfloor frac{n}{d} floor}{(n-di)sumlimits_{j=1}^{lfloor frac{m}{d} floor}(m-dj)}}-sumlimits_{i=1}^{n-1}{isumlimits_{j=1}^{m-1}{j}} ]

分析

[large egin{split} & sumlimits_{i=1}^nsumlimits_{j=1}^m(gcd(i,j)-1)(n-i)(m-j)\ &=sumlimits_{i=1}^nsumlimits_{j=1}^m(gcd(i,j))(n-i)(m-j)-sumlimits_{i=1}^n{sumlimits_{j=1}^m{ij}}\ &=sumlimits_{d=1}^{min(n,m)}{varphi{(d)}sumlimits_{i=1}^{lfloor frac{n}{d} floor}{(n-di)sumlimits_{j=1}^{lfloor frac{m}{d} floor}(m-dj)}}-sumlimits_{i=1}^{n-1}{isumlimits_{j=1}^{m-1}{j}} end{split} ]

然后直接枚举算一下即可。

杜教筛

(筛varphi(x)前缀和)

考虑到有 (varphi*I=id) ,于是设 (g=I) ,发现剩下的都非常好求:

(id) 的前缀和就是等差数列求和,(I) 的前缀和就是区间长度。

(筛mu(x)前缀和)

考虑到有 (mu*I=varepsilon) ,于是设 (g=I) ,剩下的也都很好求:

(varepsilon) 前缀和就是 (1)(I) 前缀和同上。

(筛idcdotvarphi前缀和)

考虑杜教筛,然后根据常见套路,可以卷上 (id)

[large (f*id)(n)=sum_{dvert n}dcdot varphi(d)cdotfrac nd=nsum_{dvert n}varphi(d)=n^2 ]

考虑这个 (f) 的前缀和:(large sumlimits_{i=1}^ni^2=frac{n(n+1)(2n+1)}{6}) ,很好求。

再考虑 (id) 的前缀和,就是等差数列,也很好求。

那么就可以杜教筛了。

(筛idcdot mu前缀和)

还是常见套路...见到 (id) 就可以考虑拿个 (id) 来卷。

于是有:

[(f*id)(n)=sum_{dvert n}dcdot mu(d)cdot frac nd=nsum_{dvert n}mu(d)=n[n=1]=[n=1] ]

这个东西的前缀和很显然是 (1) ,然后 (id) 的前缀和是个等差数列,也很好求。

那么就可以杜教筛。

综合应用

(求sumlimits_{i=1}^nsumlimits_{j=1}^nf(gcd(i,j))f(lcm(i,j)))

其中,(large f(x)=sumlimits_{dvert x}mu(d)d)

因为先推柿子推不动了,然后发现有个积性函数的性质,所以我们先不慌推柿子

首先根据狄利克雷卷积的性质,很容易知道 (f) 是个积性函数,有 (f(n)f(m)=f(nm)) ((gcd(n,m)=1))

接下来考虑 (f(gcd(i,j)) imes f(lcm(i,j)))

[large egin{split} & f(gcd(i,j)) imes f(lcm(i,j))\ &=prod_{i=1}^{k}f(p_{i}^{min(a_i,b_i)}) imes f(p_{i}^{max(a_i,b_i)})\ &=prod_{i=1}^{k}f(p_i^{a_i}) imes f(p_i^{b_i})\ &=f(prod_{i=1}^kp_i^{a_i})f(prod_{i=1}^kp_i^{b_i})\ &=f(i) imes f(j) end{split} ]

然后再推推柿子吧:

[large egin{split} & sumlimits_{i=1}^nsumlimits_{j=1}^nf(gcd(i,j)) imes f(lcm(i,j))\ &=sumlimits_{i=1}^nsumlimits_{j=1}^nf(gcd(i,j)) imes f(frac {icdot j}{gcd(i,j)})\ &=sumlimits_{i=1}^nsumlimits_{j=1}^nf(i)f(j)\ &=sum_{i=1}^nf(i)sum_{j=1}^nf(j)\ &=left(sum_{i=1}^nf(i) ight)^2\ &=left(sum_{i=1}^nsum_{dvert i}mu(d)d ight)^2\ &=left(sum_{d=1}^nmu(d)dlfloorfrac nd floor ight)^2 end{split} ]

于是我们考虑杜教筛筛出 (mu(d)d) ,然后除法分块即可。

(关于怎么筛可以见下文“杜教筛”部分)

(求sumlimits_{i=1}^{n}{(i,n)})

结论

[large sumlimits_{d|n}{varphi{(d)}dfrac{n}{d}} ]

分析

[large sumlimits_{i=1}^{n}{(i,n)}=sumlimits_{i=1}^{n}{sumlimits_{d|i}{sumlimits_{d|n}{varphi{(d)}}}}=sumlimits_{d|n}{sumlimits_{i=1}^{n}{sumlimits_{d|i}{varphi{(d)}}}}=sumlimits_{d|n}{varphi{(d)}lfloordfrac{n}{d} floor} ]

(求sumlimits_{k}{varphi{(k)}[n\% k+m\% kge k]})

结论

[large sumlimits_{k}{varphi{(k)}[n\% k+m\% kge k]}=nm ]

分析

[large egin{split} & sumlimits_{k}{varphi{(k)}[n\% k+m\% kge k]}\ &=sumlimits_{k}{varphi{(k)}(lfloor dfrac{n+m}{k} floor-lfloor dfrac{n}{k} floor-lfloor dfrac{m}{k} floor)}\ &=sum_limits{k=1}^{n+m}{varphi{(k)}lfloor dfrac{n+m}{k} floor}-sum_limits{k=1}^{n}{varphi{(k)}lfloor dfrac{n}{k} floor}-sum_limits{k=1}^{m}{varphi{(k)}lfloor dfrac{m}{k} floor}\ &=sumlimits_{i=1}^{n+m}{sumlimits_{k|i}{varphi{(k)}}}- sumlimits_{i=1}^{n}{sumlimits_{k|i}{varphi{(k)}}} -sumlimits_{i=1}^{m}{sumlimits_{k|i}{varphi{(k)}}}\ &=sumlimits_{i=1}^{n+m}{i}- sumlimits_{i=1}^{n}{i} -sumlimits_{i=1}^{m}{i}\ &=dfrac{(n+m)(n+m+1)-n(n+1)-m(m+1)}{2}\ &=nm end{split} ]

(求sumlimits_{i=1}^nsumlimits_{j=1}^m(i+j)^kmu^2((i,j))(i,j))

先推一下柿子:

[large egin{split} & sum_{i=1}^nsum_{j=1}^m(i+j)^kmu^2(gcd(i,j))gcd(i,j)\ &=sum_{d=1}^nd^{k+1}mu^2(d)sum_{i=1}^{lfloorfrac nd floor}sum_{j=1}^{lfloorfrac md floor}(i+j)^k[(i,j)=1]\ &=sum_{d=1}^{n}mu^2(d)d^{k+1}sum_{t=1}^{lfloorfrac nd floor}mu(t)t^ksum_{i=1}^{lfloorfrac n{td} floor}sum_{j=1}^{lfloorfrac m{td} floor} (i+j)^k end{split} ]

然后设 (large S(n,m)=sumlimits_{i=1}^nsumlimits_{j=1}^m(i+j)^k)

发现剩下的柿子还是一个二次除法分块,于是考虑传统艺能,直接枚举倍数把第二个除法分块变成卷积的形式:

(T=td)

[large sum_{T=1}^{n}T^kS(lfloorfrac nT floor,lfloorfrac mT floor)sum_{dvert T}dmu^2(d)mu(frac Td) ]

接下来考虑两个问题。

首先是如何预处理 (S(n,m)) ,可以见上面的“基础知识”。

第二个问题是处理 (large sumlimits_{dvert T}dmu^2(d)mu(frac Td))

发现是 (id*mu^2*mu) ,根据狄利克雷卷积的性质,得到这也是个积性函数,设为 (f)

讨论一下线性筛需要的端点值之后,直接线性筛预处理即可。

最后柿子就是一个除法分块,直接做。

(求sumlimits_{i=1}^nsumlimits_{j=1}^mf(gcd(i,j)))

其中,我们定义 (f(x)) 表示:(x) 的所有质因子的最大次数。

还是推一推柿子吧:

[large egin{split} & sumlimits_{i=1}^nsumlimits_{j=1}^msum_{dvert gcd(i,j)}f(d)[gcd(i,j)=1]\ &=sum_{d=1}^nf(d)sum_{i=1}^{lfloorfrac nd floor}sum_{j=1}^{lfloorfrac md floor}[gcd(i,j)=1]\ &=sum_{d=1}^n f(d)sum_{k=1}^{lfloorfrac nd floor}mu(k)sum_{i=1}^{lfloorfrac{n}{kd} floor}sum_{j=1}^{lfloorfrac m{kd} floor}1\ &=sum_{d=1}^n f(d)sum_{k=1}^{lfloorfrac nd floor}mu(k){lfloorfrac{n}{kd} floor}{lfloorfrac m{kd} floor} end{split} ]

然后还是传统艺能,两次除法分块不好做,于是枚举乘积转化成一个整除分块和卷积的形式:

[large sum_{d=1}^n f(d)sum_{k=1}^{lfloorfrac nd floor}mu(k){lfloorfrac{n}{kd} floor}{lfloorfrac m{kd} floor}=sum_{t=1}^n {lfloorfrac{n}{t} floor}{lfloorfrac m{t} floor}sum_{dvert t}f(d)mu(frac td) ]

后面那个东西有个暴力的讨论发现可以直接筛,详见yyb的博客

前面的就是数论分块,结束。

例题

CF900D Unusual Sequences

题目:CF900D Unusual Sequences

解答:CF900D Unusual Sequences

P3455 [POI2007]ZAP-Queries

题目:P3455 [POI2007]ZAP-Queries

解答:P3455 [POI2007]ZAP-Queries

P2257 YY的GCD

题目:P2257 YY的GCD

解答:P2257 YY的GCD

[BZOJ2956]模积和

题目:[BZOJ2956]模积和

解答:[BZOJ2956]模积和

[BZOJ4804]欧拉心算

题目:[BZOJ4804]欧拉心算

解答:[BZOJ4804]欧拉心算

P3327 [SDOI2015]约数个数和

题目:P3327 [SDOI2015]约数个数和

解答:P3327 [SDOI2015]约数个数和

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

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

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

BS1598【BZOJ2813】奇妙的Fibonacci

题目:BS1598【BZOJ2813】奇妙的Fibonacci

解答:BS1598【BZOJ2813】奇妙的Fibonacci

BSOJ2985【BZOJ4407】于神之怒加强版

题目:BSOJ2985【BZOJ4407】于神之怒加强版

解答:BSOJ2985【BZOJ4407】于神之怒加强版

BSOJ3348【BZOJ4804】欧拉心算

题目:BSOJ3348【BZOJ4804】欧拉心算

解答:BSOJ3348【BZOJ4804】欧拉心算

BSOJ5019&P6156&P6222 简单题

题目:BSOJ5019&P6156&P6222 简单题

解答:BSOJ5019&P6156&P6222 简单题

BSOJ4129【BZOJ2693】jzptab

题目:BSOJ4129【BZOJ2693】jzptab

解答:BSOJ4129【BZOJ2693】jzptab

BSOJ5660【BZOJ3309】DZY Loves Math

题目:BSOJ5660【BZOJ3309】DZY Loves Math

解答:BSOJ5660【BZOJ3309】DZY Loves Math

BSOJ1596【BZOJ4805】欧拉函数求和

题目:BSOJ1596【BZOJ4805】欧拉函数求和

解答:BSOJ1596【BZOJ4805】欧拉函数求和

P5218 无聊的水题 II

题目:P5218 无聊的水题 II

解答:P5218 无聊的水题 II

P3172 [CQOI2015]选数

题目:P3172 [CQOI2015]选数

解答:P3172 [CQOI2015]选数

BSOJ5655【BZOJ4916】神犇和蒟蒻

题目:BSOJ5655【BZOJ4916】神犇和蒟蒻

解答:BSOJ5655【BZOJ4916】神犇和蒟蒻

51nod2026 Gcd and Lcm

题目:51nod2026 Gcd and Lcm

解答:51nod2026 Gcd and Lcm

题目:

解答:

扩展题

详见莫比乌斯反演(函数)练习题单

原文地址:https://www.cnblogs.com/Akmaey/p/15222391.html