设 \(d(x)\) 为 \(x\) 的约数个数,给定 \(N\) 、\(M\),求 \(\sum\limits_{i=1}^N \sum\limits_{j=1}^M d(ij)\)
输入文件包含多组测试数据。 第一行,一个整数 \(T\) ,表示测试数据的组数。 接下来的 \(T\) 行,每行两个整数 \(N\) 、\(M\) 。
\(T\) 行,每行一个整数,表示你所求的答案。
2
7 4
5 6
110
121
\(1<=N, M<=50000\)\(1<=T<=50000\)
首先有一个结论 $ d(i,j)=\sum\limits_{x|i} \sum\limits_{y|j} [gcd(x,y)==1] $ 原谅我不会证 \(qwq\)
接下来,喜闻乐见的推式子\[ \begin{equation*} \begin{aligned} &\sum\limits_{i=1}^n \sum\limits_{j=1}^m d(ij) \\ =&\sum\limits_{i=1}^n \sum\limits_{j=1}^m \sum\limits_{x|i} \sum\limits_{y|j} [gcd(x,y)==1] \\ =&\sum\limits_{i=1}^n \sum\limits_{j=1}^m [gcd(x,y)==1] \times \lfloor \frac{n}{x} \rfloor \times \lfloor \frac{m}{y} \rfloor \\ \end{aligned} \end{equation*} \] 设 \(f(i)=\sum\limits_{i=1}^n \sum\limits_{j=1}^m [gcd(x,y)==1] \times \lfloor \frac{n}{x} \rfloor \times \lfloor \frac{m}{y} \rfloor\) 应用莫比乌斯反演\[ \begin{equation*} \begin{aligned} F(i)&=f(i)+f(2i)+... \\ &=\sum\limits_{x=1}^{\lfloor \frac{n}{i} \rfloor} \sum\limits_{y=1}^{\lfloor \frac{m}{i} \rfloor} \lfloor \frac{n}{ix} \rfloor \lfloor \frac{m}{iy} \rfloor \\ &=\sum\limits_{x=1}^{\lfloor \frac{n}{i} \rfloor} \lfloor \frac{n}{ix} \rfloor \sum\limits_{y=1}^{\lfloor \frac{m}{i} \rfloor} \lfloor \frac{m}{iy} \rfloor \end{aligned} \end{equation*} \] 不妨设 \(s(x)=\sum\limits_{i=1}^x \lfloor \frac{x}{i} \rfloor\) 它可以预处理后 \(O(1)\) 调用 则 \(f(i)=\sum\limits_{i|d} \mu(\frac{d}{i}) s(\frac{n}{d}) s(\frac{m}{d})\) 那么\[ \begin{equation*} \begin{aligned} ans&=f(1) \\ &=\sum\limits_{i=1}^{min(n,m)} \mu(i) s(\frac{n}{i})s(\frac{m}{i}) \end{aligned} \end{equation*} \] 然后就好啦。
转载于:https://www.cnblogs.com/lindalee/p/10539858.html