题面
传送门:洛咕
Solution
调到自闭,我好菜啊 为了方便讨论,以下式子$m>=n$ 为了方便书写,以下式子中的除号均为向下取整 我们来颓柿子吧qwq 显然,题目让我们求: $\large \sum_{i=1}^n\sum_{j=1}^m lcm(i,j)$ $lcm$没法玩,我们转到$gcd$形式: $\large \sum_{i=1}^n\sum_{j=1}^m \frac{i*j}{gcd(i,j)}$ 根据套路,我们去枚举$gcd$ $\large \sum_{i=1}^n\sum_{j=1}^m\sum_{d=1}^{n} \frac{i*j}{d}[gcd(i,j)=d]$ 然后可以把$d$的和号移到前面去 $\large \sum_{d=1}^{n}\sum_{i=1}^n\sum_{j=1}^m \frac{i*j}{d}[gcd(i,j)=d]$ 要让$gcd(i,j)=d$,$i,j$都必须要为$d$的倍数,我们可以将原来的$i*d,j*d$映射为$i,j$,有: $\large \sum_{d=1}^{n}\sum_{i=1}^{n/d}\sum_{j=1}^{m/d} {i*j}*d[gcd(i,j)=1]$ 把$d$移到前面去 $\large \sum_{d=1}^{n}d\sum_{i=1}^{n/d}\sum_{j=1}^{m/d} {i*j}[gcd(i,j)=1]$ 然后我们可以套路地根据$[x=1]=\sum_{dx}\mu(d)$这个柿子把$gcd(i,j)$处理掉: $\large \sum_{d=1}^{n}d\sum_{i=1}^{n/d}\sum_{j=1}^{m/d} {i*j}\sum_{kgcd(i,j)}\mu(k)$ 根据套路,我们把这种奇奇怪怪的和式变为枚举的形式 $\large \sum_{d=1}^{n}d\sum_{i=1}^{n/d}\sum_{j=1}^{m/d} {i*j}\sum_{k=1}^{n/d}[kgcd(i,j)]\mu(k)$ 然后就可以把$k$往前提了 $\large \sum_{d=1}^{n}d\sum_{k=1}^{n/d}\sum_{i=1}^{n/d}\sum_{j=1}^{m/d} {i*j}*[kgcd(i,j)]\mu(k)$ 要有$kgcd(i,j)$,$i,j$一定要为$k$的倍数 $\large \sum_{d=1}^{n}d\sum_{k=1}^{n/d}\sum_{i=1}^{\frac{n}{d*k}}\sum_{j=1}^{\frac{m}{d*k}} {i*j*k^2}*\mu(k)$ 然后我们简单的移一下项方便处理 $\large \sum_{d=1}^{n}d\sum_{k=1}^{n/d}*\mu(k)*k^2\sum_{i=1}^{\frac{n}{d*k}}i\sum_{j=1}^{\frac{m}{d*k}} j$ 后面的$j$与$i$没有半毛钱关系,我们可以把它分离开来 $\large \sum_{d=1}^{n}d\sum_{k=1}^{n/d}*\mu(k)*k^2(\sum_{i=1}^{\frac{n}{d*k}}i)(\sum_{j=1}^{\frac{m}{d*k}} j)$ 搞定,到这里为止,我们所有东西都可以求了。 对于前面的$d$的和式,我们可以发现当$n/d,m/d$不变的时候,后面的柿子计算出来的结果是一样的,因此我们可以$O(\sqrt n)$来整除分块掉前面那个和式。 后面的那个柿子我们可以再来一次整数除法来计算:最后面的两个和式都是等差数列,前面的$\mu(k)*k^2$可以前缀和直接计算。 总复杂度$O(\sqrt n * \sqrt n)=O(n)$ 但是这题还有一个$O(\sqrt n)$的做法,蒟蒻太菜了不会,就不说了
Code
这题细节繁多,请注意多膜以防乘爆 预处理中的$i^2$会爆int,请注意
1 | //Luogu P1829 [国家集训队]Crash的数字表格 / JZPTAB |