题意:求$\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)$。

开始开心(自闭)化简:

$\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)$

=$\sum_{d=1}^{n}\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{ij}{d}[gcd(i,j)==d]$

=$\sum_{d=1}^{n}\sum_{i=1}^{\lfloor \frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor \frac{m}{d}\rfloor}ijd[gcd(i,j)==1]$

=$\sum_{d=1}^{n}d\sum_{i=1}^{\lfloor \frac{n}{d}\rfloor}\mu(i)i^2S({\lfloor \frac{n}{id}\rfloor})S({\lfloor \frac{m}{id}\rfloor}),S(n)=(n+1)*n/2$

=$\sum_{T=1}^{n}S({\lfloor \frac{n}{T}\rfloor})S({\lfloor \frac{m}{T}\rfloor})\sum_{d|T}d(\frac{T}{d})^2\mu(\frac{T}{d})$

=$\sum_{T=1}^{n}S({\lfloor \frac{n}{T}\rfloor})S({\lfloor \frac{m}{T}\rfloor})T\sum_{d|T}(\frac{T}{d})\mu(\frac{T}{d})$

令$F(T)=T\sum_{d|T}(\frac{T}{d})\mu(\frac{T}{d})$

只需要预处理F的前缀和,前面整除分块问题就解决了。

$F(1)=1,F(p^c)=\mu(1)*1+\mu(p)*p=1-p$

可以知道F是一个积性函数,对T进行质因数分解,即可求得F(T),可以在筛质数的时候进行求解,具体看代码。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e7+;
const int MD=;
bool p[N];
int pri[N],f[N],tot;
void init() {
f[]=;
for(int i=;i<N;i++) {
if(!p[i]) pri[tot++]=i,f[i]=-i+MD;
for(int j=;j<tot&&i*pri[j]<N;j++) {
p[i*pri[j]]=true;
if(i%pri[j]==) {
f[i*pri[j]]=f[i];
break;
}
else f[i*pri[j]]=1LL*f[i]*f[pri[j]]%MD;
}
}
for(int i=;i<N;i++) f[i]=1LL*f[i]*i%MD;
for(int i=;i<N;i++) f[i]=(f[i]+f[i-])%MD;
}
int cal(int x) {
return 1LL*x*(x+)/%MD;
}
int main() {
init();
int n,m;
scanf("%d%d",&n,&m);
if(n>m) swap(n,m);
int ans=;
for(int l=,r;l<=n;l=r+) {
r=min(n/(n/l),m/(m/l));
ans=(ans+1LL*(f[r]-f[l-]+MD)*cal(n/l)%MD*cal(m/l)%MD)%MD;
}
printf("%d\n",ans);
return ;
}

最新文章

  1. [转]提高 Linux 上 socket 性能,加速网络应用程序的 4 种方法
  2. 今天逛VC驿站 的收获
  3. C#数据类型转换的几种形式
  4. svn-添加忽略文件
  5. MFC中对话框的工具栏的使用
  6. tbschedule
  7. 关于laravel5.2仓库的建立,以及简单调用
  8. Linux 安装配置 FTP 服务 (vsftpd)
  9. Oracle的dual
  10. jQuery获取name相同被选中的多选框的值
  11. 使用Topshelf开发Windows服务、log4net记录日志
  12. ORACLE 中ROWNUM
  13. 为什么我们不要 .NET 程序员
  14. 解决NPM无法安装任何包的解决方案(npm ERR! code MODULE_NOT_FOUND)
  15. Oracle 小技巧
  16. 【LOJ】#121. 「离线可过」动态图连通性
  17. Amaze UI JS 气泡弹出
  18. Codeforces 701C. They Are Everywhere 思路题
  19. JSON toBean Timestamp To Date 时间戳转日期
  20. JDK 6和JDK 7的intern方法之不同

热门文章

  1. Vue. 之 报错 Uncaught (in promise)
  2. videojs使用的常见问题
  3. hbase 聚合操作
  4. PowerDesigner在修改表的字段Name的时Code不自动跟着变的处理方法以及导入Mysql数据库的表
  5. JAVA面试常见问题之开源框架和容器篇
  6. agc033
  7. 适配器模式--在NBA我需要翻译
  8. python基础--字符编码以及文件操作
  9. NKOJ1472 警卫安排
  10. Django项目:CRM(客户关系管理系统)--05--02PerfectCRM创建ADMIN页面03