http://www.lydsy.com/JudgeOnline/problem.php?id=2693

题意:求$\sum_{i=1}^{n} \sum_{j=1}^{m} lcm(i, j)$, $n,m \le 1e7$, 多个询问$q \le 10000$

#include <bits/stdc++.h>
using namespace std; typedef long long ll;
const int N=1e7+10, MD=100000009;
int p[N], pcnt, mx;
bool np[N];
ll g[N];
void init() {
g[1]=1;
int i, j, t;
for(i=2; i<=mx; ++i) {
if(!np[i]) p[++pcnt]=i, g[i]=1-i;
for(j=1; j<=pcnt; ++j) {
t=p[j]*i; if(t>mx) break;
np[t]=1;
if(i%p[j]==0) { g[t]=g[i]; break; }
g[t]=g[i]*(1-p[j]);
}
}
for(i=2; i<=mx; ++i) g[i]*=i;
for(i=1; i<=mx; ++i) g[i]+=g[i-1], g[i]%=MD;
}
int nn[10005], mm[10005];
int main() {
int t; scanf("%d", &t);
for(int i=1; i<=t; ++i) scanf("%d %d", &nn[i], &mm[i]), mx=max(max(nn[i], mm[i]), mx);
init();
for(int k=1; k<=t; ++k) {
int n=nn[k], m=mm[k]; if(n>m) swap(n, m);
ll ans=0, t1, t2;
for(int i=1, pos=0; i<=n; i=pos+1) {
pos=min(n/(n/i), m/(m/i));
t1=((ll)(n/i)*(n/i+1)/2)%MD;
t2=((ll)(m/i)*(m/i+1)/2)%MD;
ans+=((g[pos]-g[i-1])*((t1*t2)%MD))%MD;
ans%=MD;
}
printf("%lld\n", ((ans%MD)+MD)%MD);
}
return 0;
}

  

题解:参见上一题,bzoj2154 http://www.cnblogs.com/iwtwiioi/p/4268926.html

最新文章

  1. [WinAPI] API 1 [桌面上画一个简单彩色图形]
  2. sql server日期时间函数
  3. magento currency magento头部增加币种切换选择
  4. js利用数组length属性清空和截短数组
  5. 洛谷 P1273 有线电视网
  6. 【转】Mac和iOS开发资源汇总—更新于2013-07-19
  7. 【Linux】鸟哥的Linux私房菜基础学习篇整理(七)
  8. ajax(ajax开发)
  9. likely()与unlikely()
  10. html5图片上传时IOS和Android均显示摄像头拍照和图片选择
  11. CPU和GPU的差别
  12. Python 为什么要使用描述符?
  13. 选择 25k 的 996 还是 18k 的 965
  14. 理解git工作区和暂存区
  15. WebSocket服务端和客户端使用
  16. React Native升级目标SDK
  17. java基本语法、标识符、关键字
  18. SparkStreaming python 读取kafka数据将结果输出到单个指定本地文件
  19. Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
  20. Linux 配置rdate时间服务器方法

热门文章

  1. Delphi中线程类TThread实现多线程编程2---事件、临界区、Synchronize、WaitFor……
  2. HTML CSS微信CSS显示一些总结
  3. 【叉积】【sdut 2508 图形密码】
  4. 一次Promise 实践:异步任务的分组调度
  5. [LeetCode] Pow(x, n)
  6. POJ3694 Network(Tarjan双联通分图 LCA 桥)
  7. maven File encoding has not been set
  8. git checkout 命令详解
  9. OpenMesh 读写网格控制(读取写入纹理坐标,法向等)
  10. 面向服务的架构SOA