zoukankan      html  css  js  c++  java
  • 莫比乌斯函数&欧拉函数&筛法 综合运用

    前置知识

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

    线性筛

    详见线性筛

    整除分块

    详见整除分块

    狄利克雷卷积

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

    欧拉函数

    详见欧拉函数

    莫比乌斯函数

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

    杜教筛

    详见杜教筛

    基础应用

    最基础的一些题目。

    基础知识

    (求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

    题目:

    解答:

    扩展题

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

  • 相关阅读:
    粘性固定 position:sticky
    vue组件样式scoped
    vue组件结构
    vue根据路由判断所在的内容
    配置系统变量
    div中放入一个img元素导致div高度会多出几个像素
    button标签设置line-height问题
    Netty学习——protoc的新手使用流程
    Netty学习——Google Protobuf的初步了解
    Netty学习——Google Protobuf使用方式分析和环境搭建
  • 原文地址:https://www.cnblogs.com/Akmaey/p/15222391.html
Copyright © 2011-2022 走看看