前置知识
顺序有先后,但是不是完全的次序,建议确认全部都会再食用本篇。
线性筛
详见线性筛
整除分块
详见整除分块
狄利克雷卷积
详见数论函数&狄利克雷卷积
欧拉函数
详见欧拉函数
莫比乌斯函数
详见莫比乌斯函数&莫比乌斯反演
杜教筛
详见杜教筛
基础应用
最基础的一些题目。
基础知识
(求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
题目:
解答:
扩展题
详见莫比乌斯反演(函数)练习题单。