题意
求:
\[\sum_{i = 1} ^ n \sum_{j = 1} ^ m d(ij) \]其中 \(d(n)\) 代表 \(n\) 的约数个数。
Sol
考虑拆开 \(d(ij)\),平凡的想法是考虑 \(i\) 和 \(j\) 分别对 \(d(ij)\) 提供因子。
注意到若 \(i\) 能提供完因子 \(p\),那么直接从 \(i\) 里取即可。
否则需要在 \(j\) 里取因子。
集中注意力,注意到从 \(j\) 里取因子,当且仅当 \(i\) 已经被取完了。
这句话看似是废话,但这告诉我们,取 \(j\) 的因子完全可以代表 \(i\) 的因子被取完。
考虑一种双射,取 \(i\) 表示取 \(i\),取 \(j\) 表示先取完 \(i\),然后再取 \(j\)。
因此我们保证了双射过后不会同时取 \(i\) 和 \(j\)。
也就是:
\[d(ij) = \sum_{x | i} \sum_{y | j} [\gcd(i, j) = 1] \]后面的就很简单啦。
\[\begin{align*} \sum_{i = 1} ^ n \sum_{j = 1} ^ m d(ij) &= \sum_{i = 1} ^ n \sum_{j = 1} ^ m \sum_{x | i} \ sum_{y | j} [\gcd(i, j) = 1] \\ &= \sum_{x = 1} ^ n \sum_{y = 1} ^ m [\gcd(i, j) = 1] \lfloor \frac{n}{x} \rfloor \lfloor \frac{m}{y} \rfloor \\ &= \sum_{x = 1} ^ n \sum_{y = 1} ^ m \lfloor \frac{n}{x} \rfloor \lfloor \frac{m}{y} \rfloor \sum_{d | \gcd(x, y)} \mu(d) \\ &= \sum_{d = 1} ^ {\min(n, m)} \mu(d) \sum_{x = 1} ^ n \sum_{y = 1} ^ m \lfloor \frac{n}{x} \rfloor \lfloor \frac{n}{y} \rfloor [d | x] [d | y] \\ &= \sum_{d = 1} ^ {\min(n, m)} \mu(d) \sum_{x = 1} ^ {\lfloor \frac{n}{d} \rfloor} \sum_{y = 1} ^ {\lfloor \frac{m}{d} \rfloor} \lfloor \frac{n}{xd} \rfloor \lfloor \frac{m}{yd} \rfloor \end{align*}\]令 \(f(n) = \sum_{i = 1} ^ n \lfloor \frac{n}{i} \rfloor\)。
\[\begin{align*} &= \sum_{d = 1} ^ {\min(n, m)} \mu(d) f(\frac{n}{d}) f(\frac{m}{d}) \end{align*}\]预处理 \(f\),直接整除分块即可。
标签:约数,lfloor,frac,P3327,sum,rfloor,因子,ij,SDOI2015 From: https://www.cnblogs.com/cxqghzj/p/18097620