题目描述

题解:

有一个式子:

证明先不说了。

然后倒一波反演:

然后整除分块就好了。

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 50050
#define ll long long
int t,n,m;
int pri[N],cnt,mu[N];
ll sum[N],f[N];
bool vis[N];
void get_mu()
{
mu[]=sum[]=;
for(int i=;i<=;i++)
{
if(!vis[i])
{
pri[++cnt]=i;
mu[i]=-;
}
for(int j=;j<=cnt&&i*pri[j]<=;j++)
{
vis[i*pri[j]]=;
if(i%pri[j])mu[i*pri[j]]=-mu[i];
else break;
}
sum[i]=sum[i-]+mu[i];
}
}
void get_f()
{
for(int x=;x<=;x++)
for(int i=,nxt;i<=x;i=nxt+)
{
nxt=x/(x/i);
f[x]+=1ll*(nxt-i+)*(x/i);
}
}
int main()
{
scanf("%d",&t);
get_mu();
get_f();
while(t--)
{
scanf("%d%d",&n,&m);
if(n>m)swap(n,m);
ll ans = ;
for(int i=,nxt;i<=n;i=nxt+)
{
nxt = min(n/(n/i),m/(m/i));
ans+=1ll*(sum[nxt]-sum[i-])*f[n/i]*f[m/i];
}
printf("%lld\n",ans);
}
return ;
}

最新文章

  1. EntityFramework 7 Migrations 迁移命令
  2. 影响前端的Chrome浏览器36
  3. Java-Linux系统中搭建开发环境
  4. [C++基础]一个比较常用的配置文件/初始化文件读取程序
  5. ndk-gdb 对java/native code联合调试(升级版)
  6. 《Android开发艺术探索》读书笔记 (9) 第9章 四大组件的工作过程
  7. 浏览器中 for in 反射 对象成员 的差异
  8. DELL磁盘阵列控制卡(RAID卡)MegaCli常用管理命令汇总
  9. Wijmo 5 + Ionic Framework之:费用跟踪 App
  10. NSDate常用代码范例
  11. java IO(六):额外功能处理流
  12. JS声明变量的写法
  13. 常见排序算法及Java实现
  14. [Codeforces]605E Intergalaxy Trips
  15. 利用nginx 反向代理解决跨域问题
  16. Git 实用指南
  17. 关于百度地图(离线)使用过程报“Cannot read property &#39;jb&#39; of undefined ”错误的解决办法
  18. HttpServerUtility常用方法
  19. logstash常用插件解析
  20. UITableView的分割线长短的控制

热门文章

  1. bzoj 2157: 旅游【树链剖分+线段树】
  2. bzoj 3110 [Zjoi2013]K大数查询【树套树||整体二分】
  3. [App Store Connect帮助]八、维护您的 App(6)使某个先前版本不可下载
  4. windows 命令行下 切换目录
  5. solr的安装配置与helloworld
  6. 《windows核心编程系列》三谈谈内核对象及句柄的本质
  7. SQL 初级教程学习(二)
  8. BZOJ2006 超级钢琴
  9. 牛客小白月赛5-J-时间(time) (简单模拟)
  10. C# 基础知识和VS2010的小技巧总汇