前置知识
顺序有先后,但是不是完全的次序,建议确认全部都会再食用本篇。
线性筛
详见线性筛
整除分块
详见整除分块
狄利克雷卷积
详见数论函数&狄利克雷卷积
欧拉函数
详见欧拉函数
莫比乌斯函数
详见莫比乌斯函数&莫比乌斯反演
杜教筛
详见杜教筛
基础应用
最基础的一些题目。
基础知识
\(求\sum\limits_{i=1}^mn\%i\)
问题
求
\[\large \sum\limits_{i=1}^mn\%i
\]
结论
\[\large nm-\sum\limits_{i=1}^mi\times \lfloor\frac ni\rfloor
\]
分析
求:
\[\large \sum\limits_{i=1}^mn\%i=\sum\limits_{i=1}^m(n-\lfloor\frac ni\rfloor\times i)=nm-\sum\limits_{i=1}^mi\times \lfloor\frac ni\rfloor
\]
然后直接整除分块即可。
\(求\sum\limits_{i=1}^{n}\sum\limits_{j=1 \land i \not = j}^{m}(n\ mod\ i)(m\ mod\ j)\)
结论
\[\large=\sum_{i=1}^{n}\sum_{j=1}^{m}(n-{\left \lfloor \frac{n}{i} \right \rfloor}i)(m-{\left \lfloor \frac{m}{j} \right \rfloor}j)-\sum_{i=1}^{min(n,m)}(nm+{\left \lfloor \frac{n}{i} \right \rfloor}{\left \lfloor \frac{m}{i} \right \rfloor}i^2-(m{\left \lfloor \frac{n}{i} \right \rfloor}+n{\left \lfloor \frac{m}{i} \right \rfloor})i)
\]
于是直接数论分块即可。
分析
\[\large \sum\limits_{i=1}^{n}\sum\limits_{j=1 \land i \not = j}^{m}(n\ mod\ i)(m\ mod\ j)
\]
\[\large =\sum_{i=1}^{n}\sum_{j=1}^{m}(n-{\left \lfloor \frac{n}{i} \right \rfloor}i)(m-{\left \lfloor \frac{m}{j} \right \rfloor}j)-\sum_{i=1}^{min(n,m)}(n-{\left \lfloor \frac{n}{i} \right \rfloor}i)(m-{\left \lfloor \frac{m}{i} \right \rfloor}i)
\]
\[\large=\sum_{i=1}^{n}\sum_{j=1}^{m}(n-{\left \lfloor \frac{n}{i} \right \rfloor}i)(m-{\left \lfloor \frac{m}{j} \right \rfloor}j)-\sum_{i=1}^{min(n,m)}(nm+{\left \lfloor \frac{n}{i} \right \rfloor}{\left \lfloor \frac{m}{i} \right \rfloor}i^2-(m{\left \lfloor \frac{n}{i} \right \rfloor}+n{\left \lfloor \frac{m}{i} \right \rfloor})i)
\]
然后数论分块即可。
\(求\sum\limits_{i=1}^n\sum\limits_{j=1}^m(i+j)^k\)
设 \(\large S(n,m)=\sum\limits_{i=1}^n\sum\limits_{j=1}^m(i+j)^k\)
如果我们考虑枚举 \((i+j)\) 的和,设 \(\large F(n)=\sum\limits_{i=1}^ni^k\):
\[\large S(n,m)=\sum\limits_{i=m+1}^{n+m}\sum\limits_{j=1}^ij^k-\sum\limits_{i=1}^{n}\sum\limits_{j=1}^i=\sum\limits_{i=m+1}^{n+m}F(i)-\sum\limits_{i=1}^{n}F(i)=\sum_{i=1}^{n+m}F(i)-\sum\limits_{i=1}^{n}F(i)-\sum\limits_{i=1}^{m}F(i)
\]
那么设 \(\large G(n)=\sum\limits_{i=1}^nF(i)\) ,有 \(\large S(n,m)=G(n+m)-G(n)-G(m)\)
于是我们直接线性筛每一个数的 \(k\) 次幂,然后做二阶前缀和即可得到 \(G\)。
莫比乌斯函数&莫比乌斯反演
\(求\sum\limits_{i=1}^n\sum\limits_{j=1}^m[(i,j)=d]\)
问题
求
\[\large \sum\limits_{i=1}^n\sum\limits_{j=1}^m[\gcd(i,j)=d]
\]
结论
\[\large g(d)=\sum\limits_{t=1}^{\min(n,m)} \mu(t) \lfloor\dfrac n{td}\rfloor\lfloor \dfrac m{td}\rfloor
\]
分析
也就是一般有这样的套路,设函数 \(g(d)\) 为:
\[\large g(d)=\sum\limits_{i=1}^n\sum\limits_{j=1}^m[\gcd(i,j)=d]
\]
这时我们可以观察我们的函数 \(f\) :
\[\large f(d)=\sum\limits_{d\mid n}g(n)=\sum\limits_{d\mid n}\sum\limits_{i=1}^N\sum\limits_{j=1}^M[\gcd(i,j)=d]
\]
发现这时的 \(f\) 函数性质非常好,就相当于取两个数使得他们都是 \(d\) 的倍数,可以直接写出:
\[\large f(d)=\lfloor\dfrac Nd\rfloor\lfloor \dfrac Md\rfloor
\]
然后我们尝试通过莫比乌斯反演来求出 \(g\) 就是利用 \(f\) :
\[\large g(n)=\sum\limits_{n|d} \mu(\frac{d}{n}) f(d)
\]
那么就是:
\[\large g(n)=\sum\limits_{n|d} \mu(\frac{d}{n}) \lfloor\dfrac Nd\rfloor\lfloor \dfrac Md\rfloor
\]
然后我们换成直接枚举这个倍数 \(\large t=\frac dn\) :
\[\large g(n)=\sum\limits_{t=1}^{{\min(N,M)}}\mu(t) \lfloor\dfrac N{tn}\rfloor\lfloor \dfrac M{tn}\rfloor
\]
那么对于这个柿子可以应用整除分块来处理后半部分,然后预处理一下 \(\mu\) 的前缀和即可在 \(\sqrt{N}\) 的复杂度做到 \(O(n)\) 预处理的单次询问
注意这里的整除分块:
其实我们不是按照 \(tn\) 来分块(这样我就不会处理 \(\mu\) 里面的东西了),而是 \(t\) 来分块。
要把柿子转化成这样:
\[\large g(n)=\sum\limits_{t=1}^{\min(N,M)} \mu(t) \lfloor\dfrac{\lfloor\frac N{t}\rfloor}{n}\rfloor\lfloor\dfrac{\lfloor\frac M{t}\rfloor}{n}\rfloor
\]
然后这个时候以 \(t\) 来分块看上去就很没有问题了,因为变量只有 \(t\) ,和 \(n\) 没有关系,我们只关注分子的变化即可。
接下来可以注意这样的分块,其实就等价于 \(N,M\) 都来分块,分了很多个隔板,然后块的个数也就是 \(2\sqrt{N}\) 级别了。
也就是每次取 \(r\) 的时候取两者算出来较小的右端点。
\(求\sum\limits_{d\ is\ prime}\sum\limits_{i=1}^n\sum\limits_{j=1}^m[(i,j)=d]\)
问题
也就是求:
\[\large \sum\limits_{d\ is\ prime}\sum\limits_{i=1}^n\sum\limits_{j=1}^m[\gcd(i,j)=d]
\]
结论
\[\large \sum\limits_{d=1}^{\min(n,m)} \lfloor\dfrac nd\rfloor\lfloor \dfrac md\rfloor\sum\limits_{k\mid d,k\ is\ prime}\mu(\frac{d}{k})
\]
分析
根据结论,那么直接把后半写成:
\[\large \sum\limits_{k\ is\ prime}\sum\limits_{k|d} \mu(\frac{d}{k}) \lfloor\dfrac nd\rfloor\lfloor \dfrac md\rfloor
\]
然后转为枚举 \(d\) :
\[\large \sum\limits_{d=1}^{\min(n,m)} \lfloor\dfrac nd\rfloor\lfloor \dfrac md\rfloor\sum\limits_{k\mid d,k\ is\ prime}\mu(\frac{d}{k})
\]
那么最后那个柿子可以通过一点小办法处理出来,然后前面就是整除分块。
后面那个可以这样做:考虑每一个质数 \(k\) ,对于 \(k\) 的倍数 \(T\) ,将它的值加上 $ \mu(\frac{T}{k})$
\(求\sum\limits_{i=1}^n\sum\limits_{j=1}^m(i,j)\)
问题
求:
\[\large \sum\limits_{i=1}^n\sum\limits_{j=1}^m(i,j)
\]
结论
\[\large \sum\limits_{k=1}^{\min(i,j)}k\sum\limits_{t=1}^{\min(n,m)} \mu(t) \lfloor\dfrac n{tk}\rfloor\lfloor \dfrac m{tk}\rfloor
\]
分析
\[\large
\begin{split}
\sum\limits_{i=1}^n\sum\limits_{j=1}^m(i,j)
&=\sum\limits_{k=1}^{\min(n,m)}k\sum\limits_{i=1}^n\sum\limits_{j=1}^m[\gcd(i,j)=k]\\
&=\sum\limits_{k=1}^{\min(n,m)}k\sum\limits_{t=1}^{\min(n,m)} \mu(t) \lfloor\dfrac n{tk}\rfloor\lfloor \dfrac m{tk}\rfloor
\end{split}
\]
然后把后半部分整除分块,使用 \(\mu\) 的前缀和处理即可。
\(求\sum\limits_{i=1}^n\sum\limits_{j=1}^m(i,j)^k\)
稍微推一下吧:
\[\large
\begin{split}
&\ \ \ \ \sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^k\\
&=\sum_{i=1}^n\sum_{j=1}^m\sum_{d\vert \gcd(i,j)} d^k[\gcd(\frac id,\frac jd)=1]\\
&=\sum_{d=1}^{\min(n,m)}d^k\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}[\gcd(i,j)=1]\\
&=\sum_{d=1}^{\min(n,m)}d^k\sum_{k=1}^{\lfloor\frac{\min(n,m)}{d} \rfloor}\mu(k)\lfloor\frac n{kd}\rfloor\lfloor\frac m{kd}\rfloor
\end{split}
\]
后面那个东西其实就是一个数论分块,前面的就是 \(id^k\) ,根据狄利克雷卷积的性质,显然可以也是个积性函数,再加上求 \(d\) 为质数的复杂度在 \(\ln\) 以内,所以可以线性筛。
\(求\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}ij[(i,j)=1]\)
问题
\[\large
\begin{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^2\cdot G(\lfloor\frac nd\rfloor)G(\lfloor\frac md\rfloor)
\]
分析
这里没有使用莫比乌斯反演而是直接用 \(\large \mu*I=\varepsilon\) 的性质:
\[\large
\begin{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}ij\sum_{d\vert \gcd(i,j)}\mu(d)\\
&=\sum_{d=1}^{n}\mu(d)\cdot d^2\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}ij\\
&=\sum_{d=1}^{n}\mu(d)\cdot d^2\sum_{i=1}^{\lfloor\frac nd\rfloor}i\sum_{j=1}^{\lfloor\frac md\rfloor}j\\
&=\sum_{d=1}^{n}\mu(d)\cdot d^2\cdot G(\lfloor\frac nd\rfloor)G(\lfloor\frac md\rfloor)
\end{split}
\]
\(求\sum\limits_{i=1}^n\sum\limits_{j=1}^mlcm(i,j)\)
问题
\[\large \sum_{i=1}^n\sum_{j=1}^mlcm(i,j)
\]
结论
结论一:
\[\large \sum_{d=1}^nd\cdot \sum_{k=1}^{\lfloor\frac nd\rfloor}\mu(k)\cdot k^2\cdot\dfrac {{\lfloor\frac n{dk}\rfloor}({\lfloor\frac n{dk}\rfloor}+1)}{2}\dfrac {{\lfloor\frac m{dk}\rfloor}({\lfloor\frac m{dk}\rfloor}+1)}{2}
\]
结论二:(进一步优化)
\[\large \sum_{k=1}^n\lfloor\frac nk\rfloor^2\sum_{d\mid k}\varphi(d)\mu(\frac kd)
\]
分析
先将式子化简:
\[\large
\begin{split}
\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)
&=\sum_{i=1}^n\sum_{j=1}^{m}\sum_{d\vert i,d\vert j,\gcd(\frac id,\frac jd)=1}\frac {ij}{d}\\
&=\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}ij[\gcd(i,j)=1]\\
\end{split}
\]
这时我们单独计算后半部分,这里没有使用莫比乌斯反演而是直接用 \(\large \mu*I=\varepsilon\) 的性质:(这部分其实就是上一个问题)
\[\large
\begin{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}ij\sum_{d\vert \gcd(i,j)}\mu(d)\\
&=\sum_{d=1}^{n}\mu(d)\cdot d^2\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}ij\\
&=\sum_{d=1}^{n}\mu(d)\cdot d^2\sum_{i=1}^{\lfloor\frac nd\rfloor}i\sum_{j=1}^{\lfloor\frac md\rfloor}j\\
&=\sum_{d=1}^{n}\mu(d)\cdot d^2\cdot G(\lfloor\frac nd\rfloor)G(\lfloor\frac md\rfloor)
\end{split}
\]
其中,\(\large G(x)=\frac {x(x+1)}{2}\) ,表示等差数列求和。
很容易发现,对于 \(\large S\) 函数,可以通过整除分块来计算,按照 \(\large\lfloor\frac nd\rfloor\) 以及 \(\large \lfloor\frac md\rfloor\) 来分块即可,前面的部分就是预处理一下前缀和即可。
现在代回原式子:
\[\large \sum_{d=1}^nd\cdot S({\lfloor\frac nd\rfloor},{\lfloor\frac md\rfloor})
\]
然后我们可以发现,原式还需要一次除法分块,而第二次除法分块将借助第一次的作为上界进行分块,这就是二次除法分块,这样做的复杂度可以证明是 \(\large O(n^{\frac 34})\) 的。
接下来考虑进一步优化:
\[\large \sum_{d=1}^nd\cdot \sum_{k=1}^{\lfloor\frac nd\rfloor}\mu(k)\cdot k^2\cdot G(\lfloor\frac n{dk}\rfloor)G(\lfloor\frac m{dk}\rfloor)
\]
考虑枚举 \(\large dk\) :
\[\large \sum_{d=1}^nd\cdot \sum_{d\vert x}\mu(\frac xd)\cdot (\frac xd)^2\cdot G(\lfloor\frac n{x}\rfloor)G(\lfloor\frac m{x}\rfloor)
\]
交换求和符号(先枚举一个数再枚举其倍数等价于先枚举其倍数再枚举倍数的因数):
\[\large \sum_{x=1}^n G(\lfloor\frac n{x}\rfloor)G(\lfloor\frac m{x}\rfloor)\sum_{d\vert x}\mu(\frac xd)\cdot \frac {x^2}d
\]
考虑先枚举 \(\large \frac xd\) :
\[\large \sum_{x=1}^n G(\lfloor\frac n{x}\rfloor)G(\lfloor\frac m{x}\rfloor)\sum_{k\vert x}kx\cdot \mu(k)
\]
直接把 \(\large x\) 提出来:
\[\large \sum_{x=1}^n G(\lfloor\frac n{x}\rfloor)G(\lfloor\frac m{x}\rfloor)x\sum_{k\vert x}k\cdot \mu(k)
\]
于是后面那部分就是 \(\large F(x)=\sum\limits_{d\vert x}id(x)\mu(x)\) ,因为 \(id\) 和 \(\mu\) 都是积性函数,所以 \(F\) 也是积性函数。
所以可以考虑线性筛出来,前面部分就是一个整除分块,直接做即可。
时间复杂度是 \(\large O(V+m\sqrt{V})\) ,其中 \(V\) 是值域,\(m\) 是询问次数,如果使用杜教筛可以优化到 \(\large O(V^{\frac 23}+m\sqrt{V})\) 。
\(求\sum\limits_{i=1}^n\sum\limits_{j=1}^n\varphi(\gcd(i,j))\)
问题
\[\large \sum_{i=1}^n\sum_{j=1}^n\varphi(\gcd(i,j))
\]
\(\large T\le 5000,n\le 10^7\)
结论
\[\large \sum_{i=1}^n\lfloor \dfrac ni\rfloor^2\sum_{d\mid i}\varphi(d)\mu(\frac id)
\]
分析
\[\large
\begin{split}
\sum_{i=1}^n\sum_{j=1}^n\varphi(\gcd(i,j))
&=\sum_{d=1}^n\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac nd\rfloor}\varphi(d)[\gcd(i,j)=1]\\
&=\sum_{d=1}^n\varphi(d)\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac nd\rfloor}[\gcd(i,j)=1]\\
&=\sum_{d=1}^n\varphi(d)\sum_{t=1}^{\lfloor\frac nd\rfloor}\mu(t)\lfloor\frac n{dt}\rfloor^2\\
&=\sum_{k=1}^n\lfloor\frac nk\rfloor^2\sum_{d\mid k}\varphi(d)\mu(\frac kd)
\end{split}
\]
一点说明:
第三步是莫比乌斯反演的结论,第四步是直接枚举 \(dt\) ,把那个可以整除分块的东西提出来。
容易发现后面的柿子是个卷积,两个都是积性函数,根据狄利克雷卷积的性质,整体也是积性函数,然后分析一下不难得出 \(f(1),f(p),f(p^k)\) 的值,于是可以线性筛,再做一下前缀和,前面的直接整除分块即可。
扩展:貌似还有其他做法,比如欧拉函数。
\(求\sum\limits_{i=1}^n\sum\limits_{j=1}^md(ij)\)
问题
\[\large \sum_{i=1}^n\sum_{j=1}^md(ij)
\]
\(\large n,m,t\le 5\times 10^4\)
结论
上面柿子的结论:
\[\large\sum_{d=1}^{\min(n,m)}\mu(d)\sum_{i=1}^{\lfloor\frac nd\rfloor}\lfloor\frac n{di}\rfloor\sum_{j=1}^{\lfloor\frac md\rfloor}\lfloor\frac m{dj}\rfloor
\]
一个证明需要的重要结论:
\[\large d(ij)=\sum_{x\mid i}\sum_{y\mid j}[\gcd(x,y)=1]
\]
略证:
对于 \(ij\) 的质因子 \(p\) ,假设次数为 \(c\) ,设 \(i\) 中有 \(a\) 次,\(j\) 中有 \(b\) 次
接下来对于每一个 \(p\) 我们钦定如下选择:
如果 \(c\le 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}^n\sum_{j=1}^md(ij)=\sum_{i=1}^n\sum_{j=1}^m\sum_{x\mid i}\sum_{y\mid j}[\gcd(x,y)=1]\\
\]
然后可以转换成枚举 \(x,y\) :
\[\large \sum_{i=1}^n\sum_{j=1}^md(ij)=\sum_{i=1}^n\sum_{j=1}^m\lfloor\frac ni\rfloor\lfloor\frac mj\rfloor[\gcd(i,j)=1]\\
\]
接下来设:
\[\large g(d)=\sum_{i=1}^n\sum_{j=1}^m\lfloor\frac ni\rfloor\lfloor\frac mj\rfloor[\gcd(i,j)=d]
\]
以及:
\[\large f(d)=\sum_{d\vert k}g(k)=\sum_{d\vert k}\sum_{i=1}^n\sum_{j=1}^m\lfloor\frac ni\rfloor\lfloor\frac mj\rfloor[\gcd(i,j)=k]
\]
那么考虑其对于 \(d\) 的意义:
\[\large f(d)=\sum_{i=1}^n\sum_{j=1}^m\lfloor\frac ni\rfloor\lfloor\frac mj\rfloor[d\vert \gcd(i,j)]
\]
然后我们只枚举两者对于 \(d\) 的倍数:(也就是只枚举 \(i,j\) 都是 \(d\) 的倍数的数)
\[\large f(d)=\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor \frac{m}{d} \rfloor}\lfloor\frac n{di}\rfloor\lfloor\frac m{dj}\rfloor
\]
然后我们通过莫比乌斯反演写出 \(g\) :
\[\large g(k)=\sum_{k\vert d}\mu(\frac dk)f(d)=\sum_{k\vert d}\mu(\frac dk)\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor \frac{m}{d} \rfloor}\lfloor\frac n{di}\rfloor\lfloor\frac m{dj}\rfloor
\]
然后因为这里我们只需要:
\[\large g(1)=\sum_{d=1}^{\min(n,m)}\mu(d)\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}\lfloor\frac n{di}\rfloor\lfloor\frac m{dj}\rfloor=\sum_{d=1}^{\min(n,m)}\mu(d)\sum_{i=1}^{\lfloor\frac nd\rfloor}\lfloor\frac n{di}\rfloor\sum_{j=1}^{\lfloor\frac md\rfloor}\lfloor\frac m{dj}\rfloor
\]
注意后面两个柿子,有一个巧妙的处理,也就是预处理 \(\large \sum\limits_{i=1}^x\lfloor\frac xi\rfloor\) ,然后把 \(\large \lfloor\frac nd\rfloor\) 看作 \(x\) 即可。
然后显然后面两个是按照 \(\large \lfloor\frac nd\rfloor\) 和 \(\large \lfloor\frac md\rfloor\) 进行分块的,除法分块即可。
单次询问就是 \(\large \sqrt{N}\) 的。
欧拉函数&欧拉反演
\(求 \sum\limits_{i=1}^n{\sum\limits_{j=1}^m}{(i,j)}\)
结论
\[\large \sum\limits_{d=1}^{\min(n,m)}{\varphi{(d)}\lfloor\dfrac{n}{d}\rfloor\lfloor\dfrac{m}{d}\rfloor}
\]
分析
\[\large \sum\limits_{i=1}^n{\sum\limits_{j=1}^m}{(i,j)}=\sum\limits_{i=1}^n{\sum\limits_{j=1}^m{\sum\limits_{d|(i,j)}{\varphi{(d)}}}}=\sum\limits_{d=1}^{\min(n,m)}{\varphi{(d)}\lfloor\dfrac{n}{d}\rfloor\lfloor\dfrac{m}{d}\rfloor}
\]
\(求\sum\limits_{p \ is \ prime} \sum\limits_{i=1}^n \sum\limits_{i=1}^n{[(i,j)=p]}\)
结论
\[\large \sum\limits_{p \ is \ prime}2\sum\limits_{i=1}^{\lfloor\frac{n}{p}\rfloor}{\varphi(i)}-1
\]
分析
先给后面的 \(i,j\) 都除个 \(p\) ,然后根据欧拉函数的定义很容易得到这个柿子。
\(求\sum\limits_{i=1}^n\sum\limits_{j=1}^m(gcd(i,j)-1)(n-i)(m-j)\)
结论
\[\large \sum\limits_{d=1}^{min(n,m)}{\varphi{(d)}\sum\limits_{i=1}^{\lfloor \frac{n}{d}\rfloor}{(n-di)\sum\limits_{j=1}^{\lfloor \frac{m}{d}\rfloor}(m-dj)}}-\sum\limits_{i=1}^{n-1}{i\sum\limits_{j=1}^{m-1}{j}}
\]
分析
\[\large
\begin{split}
&\ \ \ \ \sum\limits_{i=1}^n\sum\limits_{j=1}^m(gcd(i,j)-1)(n-i)(m-j)\\
&=\sum\limits_{i=1}^n\sum\limits_{j=1}^m(gcd(i,j))(n-i)(m-j)-\sum\limits_{i=1}^n{\sum\limits_{j=1}^m{ij}}\\
&=\sum\limits_{d=1}^{min(n,m)}{\varphi{(d)}\sum\limits_{i=1}^{\lfloor \frac{n}{d}\rfloor}{(n-di)\sum\limits_{j=1}^{\lfloor \frac{m}{d}\rfloor}(m-dj)}}-\sum\limits_{i=1}^{n-1}{i\sum\limits_{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\) 前缀和同上。
\(筛id\cdot\varphi前缀和\)
考虑杜教筛,然后根据常见套路,可以卷上 \(id\) :
\[\large (f*id)(n)=\sum_{d\vert n}d\cdot \varphi(d)\cdot\frac nd=n\sum_{d\vert n}\varphi(d)=n^2
\]
考虑这个 \(f\) 的前缀和:\(\large \sum\limits_{i=1}^ni^2=\frac{n(n+1)(2n+1)}{6}\) ,很好求。
再考虑 \(id\) 的前缀和,就是等差数列,也很好求。
那么就可以杜教筛了。
\(筛id\cdot \mu前缀和\)
还是常见套路...见到 \(id\) 就可以考虑拿个 \(id\) 来卷。
于是有:
\[(f*id)(n)=\sum_{d\vert n}d\cdot \mu(d)\cdot \frac nd=n\sum_{d\vert n}\mu(d)=n[n=1]=[n=1]
\]
这个东西的前缀和很显然是 \(1\) ,然后 \(id\) 的前缀和是个等差数列,也很好求。
那么就可以杜教筛。
综合应用
\(求\sum\limits_{i=1}^n\sum\limits_{j=1}^nf(\gcd(i,j))f(lcm(i,j))\)
其中,\(\large f(x)=\sum\limits_{d\vert x}\mu(d)d\)
因为先推柿子推不动了,然后发现有个积性函数的性质,所以我们先不慌推柿子。
首先根据狄利克雷卷积的性质,很容易知道 \(f\) 是个积性函数,有 \(f(n)f(m)=f(nm)\) \((\gcd(n,m)=1)\)
接下来考虑 \(f(\gcd(i,j))\times f(lcm(i,j))\) :
\[\large
\begin{split}
&\ \ \ \ \ f(\gcd(i,j))\times f(lcm(i,j))\\
&=\prod_{i=1}^{k}f(p_{i}^{\min(a_i,b_i)})\times f(p_{i}^{\max(a_i,b_i)})\\
&=\prod_{i=1}^{k}f(p_i^{a_i})\times f(p_i^{b_i})\\
&=f(\prod_{i=1}^kp_i^{a_i})f(\prod_{i=1}^kp_i^{b_i})\\
&=f(i)\times f(j)
\end{split}
\]
然后再推推柿子吧:
\[\large
\begin{split}
&\ \ \ \ \ \sum\limits_{i=1}^n\sum\limits_{j=1}^nf(\gcd(i,j))\times f(lcm(i,j))\\
&=\sum\limits_{i=1}^n\sum\limits_{j=1}^nf(\gcd(i,j))\times f(\frac {i\cdot j}{\gcd(i,j)})\\
&=\sum\limits_{i=1}^n\sum\limits_{j=1}^nf(i)f(j)\\
&=\sum_{i=1}^nf(i)\sum_{j=1}^nf(j)\\
&=\left(\sum_{i=1}^nf(i)\right)^2\\
&=\left(\sum_{i=1}^n\sum_{d\vert i}\mu(d)d\right)^2\\
&=\left(\sum_{d=1}^n\mu(d)d\lfloor\frac nd\rfloor\right)^2
\end{split}
\]
于是我们考虑杜教筛筛出 \(\mu(d)d\) ,然后除法分块即可。
(关于怎么筛可以见下文“杜教筛”部分)
\(求\sum\limits_{i=1}^{n}{(i,n)}\)
结论
\[\large \sum\limits_{d|n}{\varphi{(d)}\dfrac{n}{d}}
\]
分析
\[\large \sum\limits_{i=1}^{n}{(i,n)}=\sum\limits_{i=1}^{n}{\sum\limits_{d|i}{\sum\limits_{d|n}{\varphi{(d)}}}}=\sum\limits_{d|n}{\sum\limits_{i=1}^{n}{\sum\limits_{d|i}{\varphi{(d)}}}}=\sum\limits_{d|n}{\varphi{(d)}\lfloor\dfrac{n}{d}\rfloor}
\]
\(求\sum\limits_{k}{\varphi{(k)}[n\% k+m\% k\ge k]}\)
结论
\[\large \sum\limits_{k}{\varphi{(k)}[n\% k+m\% k\ge k]}=nm
\]
分析
\[\large
\begin{split}
&\ \ \ \ \sum\limits_{k}{\varphi{(k)}[n\% k+m\% k\ge k]}\\
&=\sum\limits_{k}{\varphi{(k)}(\lfloor \dfrac{n+m}{k}\rfloor-\lfloor \dfrac{n}{k}\rfloor-\lfloor \dfrac{m}{k}\rfloor)}\\
&=\sum_\limits{k=1}^{n+m}{\varphi{(k)}\lfloor \dfrac{n+m}{k}\rfloor}-\sum_\limits{k=1}^{n}{\varphi{(k)}\lfloor \dfrac{n}{k}\rfloor}-\sum_\limits{k=1}^{m}{\varphi{(k)}\lfloor \dfrac{m}{k}\rfloor}\\
&=\sum\limits_{i=1}^{n+m}{\sum\limits_{k|i}{\varphi{(k)}}}- \sum\limits_{i=1}^{n}{\sum\limits_{k|i}{\varphi{(k)}}} -\sum\limits_{i=1}^{m}{\sum\limits_{k|i}{\varphi{(k)}}}\\
&=\sum\limits_{i=1}^{n+m}{i}- \sum\limits_{i=1}^{n}{i} -\sum\limits_{i=1}^{m}{i}\\
&=\dfrac{(n+m)(n+m+1)-n(n+1)-m(m+1)}{2}\\
&=nm
\end{split}
\]
\(求\sum\limits_{i=1}^n\sum\limits_{j=1}^m(i+j)^k\mu^2((i,j))(i,j)\)
先推一下柿子:
\[\large
\begin{split}
&\ \ \ \ \ \sum_{i=1}^n\sum_{j=1}^m(i+j)^k\mu^2(\gcd(i,j))\gcd(i,j)\\
&=\sum_{d=1}^nd^{k+1}\mu^2(d)\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}(i+j)^k[(i,j)=1]\\
&=\sum_{d=1}^{n}\mu^2(d)d^{k+1}\sum_{t=1}^{\lfloor\frac nd\rfloor}\mu(t)t^k\sum_{i=1}^{\lfloor\frac n{td}\rfloor}\sum_{j=1}^{\lfloor\frac m{td}\rfloor} (i+j)^k
\end{split}
\]
然后设 \(\large S(n,m)=\sum\limits_{i=1}^n\sum\limits_{j=1}^m(i+j)^k\)
发现剩下的柿子还是一个二次除法分块,于是考虑传统艺能,直接枚举倍数把第二个除法分块变成卷积的形式:
设 \(T=td\):
\[\large \sum_{T=1}^{n}T^kS(\lfloor\frac nT\rfloor,\lfloor\frac mT\rfloor)\sum_{d\vert T}d\mu^2(d)\mu(\frac Td)
\]
接下来考虑两个问题。
首先是如何预处理 \(S(n,m)\) ,可以见上面的“基础知识”。
第二个问题是处理 \(\large \sum\limits_{d\vert T}d\mu^2(d)\mu(\frac Td)\)
发现是 \(id*\mu^2*\mu\) ,根据狄利克雷卷积的性质,得到这也是个积性函数,设为 \(f\) 。
讨论一下线性筛需要的端点值之后,直接线性筛预处理即可。
最后柿子就是一个除法分块,直接做。
\(求\sum\limits_{i=1}^n\sum\limits_{j=1}^mf(\gcd(i,j))\)
其中,我们定义 \(f(x)\) 表示:\(x\) 的所有质因子的最大次数。
还是推一推柿子吧:
\[\large
\begin{split}
&\ \ \ \ \ \sum\limits_{i=1}^n\sum\limits_{j=1}^m\sum_{d\vert \gcd(i,j)}f(d)[\gcd(i,j)=1]\\
&=\sum_{d=1}^nf(d)\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}[\gcd(i,j)=1]\\
&=\sum_{d=1}^n
f(d)\sum_{k=1}^{\lfloor\frac nd\rfloor}\mu(k)\sum_{i=1}^{\lfloor\frac{n}{kd}\rfloor}\sum_{j=1}^{\lfloor\frac m{kd}\rfloor}1\\
&=\sum_{d=1}^n
f(d)\sum_{k=1}^{\lfloor\frac nd\rfloor}\mu(k){\lfloor\frac{n}{kd}\rfloor}{\lfloor\frac m{kd}\rfloor}
\end{split}
\]
然后还是传统艺能,两次除法分块不好做,于是枚举乘积转化成一个整除分块和卷积的形式:
\[\large \sum_{d=1}^n
f(d)\sum_{k=1}^{\lfloor\frac nd\rfloor}\mu(k){\lfloor\frac{n}{kd}\rfloor}{\lfloor\frac m{kd}\rfloor}=\sum_{t=1}^n
{\lfloor\frac{n}{t}\rfloor}{\lfloor\frac m{t}\rfloor}\sum_{d\vert 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
题目:
解答:
扩展题
详见莫比乌斯反演(函数)练习题单。