求gcd(i,j)为质数的个数。即
∑p∑i=1n∑j=1mgcd(i,j)==p \sum\limits_p\sum\limits_{i=1}^n\sum\limits_{j=1}^mgcd(i,j)==p
首先我们可以像bzoj2301一样把后一部分化简,得到(假定n< m)
∑p∑d=1⌊n/p⌋μ(d)⌊n/pd⌋⌊m/pd⌋ \sum\limits_p\sum\limits_{d=1}^{\lfloor n/p\rfloor}\mu(d)\lfloor n/pd\rfloor\lfloor m/pd\rfloor
设k=pd,则得到
∑k=1n∑p|kμ(k/p)⌊n/k⌋⌊m/k⌋ \sum\limits_{k=1}^n\sum\limits_{p|k}\mu(k/p)\lfloor n/k\rfloor\lfloor m/k\rfloor
我们预处理出前半部分的前缀和(利用线性素数筛),后面的就是用floor函数分块的套路算啦!素数是O(n/logn)级别的,更新时是均摊O(logn)的,因此预处理的复杂度是O(n)的。总的复杂度是 O(T∗(√n)) O(T*\sqrt(n))。

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define N 10000010
int T,n,m,mu[N],prime[N],tot=0;
ll f[N];
bool notprime[N];
inline int read(){int x=0;char ch=getchar();while(ch<'0'||ch>'9') ch=getchar();while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x;
}
void Mobius(){memset(notprime,0,sizeof(notprime));mu[1]=1;notprime[1]=1;for(int i=2;i<=N;++i){if(!notprime[i]){prime[++tot]=i;mu[i]=-1;}for(int j=1;prime[j]*i<=N;++j){notprime[prime[j]*i]=1;if(i%prime[j]==0){mu[prime[j]*i]=0;break;}mu[prime[j]*i]=-mu[i];}}for(int j=1;j<=tot;++j)for(int i=1;prime[j]*i<=N;++i)f[prime[j]*i]+=mu[i];for(int i=2;i<=N;++i) f[i]+=f[i-1];
}
ll ANS(int a,int b){ll re=0;if(a>b) swap(a,b);int last;for(int i=1;i<=a;i=last+1){last=min(a/(a/i),b/(b/i));re+=(f[last]-f[i-1])*(a/i)*(b/i);}return re;
}
int main(){
//  freopen("a.in","r",stdin);Mobius();T=read();while(T--){n=read();m=read();printf("%lld\n",ANS(n,m));}return 0;
}

bzoj2820 [bzoj2820]YY的GCD(线性素数筛+莫比乌斯反演)相关推荐

  1. P3768 简单的数学题 [狄利克雷卷积,杜教筛,莫比乌斯反演]

    简单的数学题 题目连接 https://www.luogu.org/problemnew/show/P3768 题目描述 输入一个正整数n,n≤1010n,n\le 10^{10}n,n≤1010和p ...

  2. 【bzoj2820】YY的GCD 莫比乌斯反演

    题目描述 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必然不会了,于是 ...

  3. matlab狄利克雷函数,数论入门1——莫比乌斯函数,欧拉函数,狄利克雷卷积,线性筛,莫比乌斯反演,杜教筛...

    数论入门1 一个菜鸡对数论的一点点理解... 莫比乌斯函数 定义函数$\mu(n)$为: 当n有平方因子时,$\mu(n)=0$. 当n没有平方因子时,$\mu(n)=(-1)^{\omega(n)} ...

  4. 并不对劲的bzoj2820:p2257:YY的GCD

    题目大意 \(t\)(\(t\leq10^4\))组数据,给定\(n,m\)(\(n,m\leq10^6\))求 \[\sum_{x=1}^{n}\sum_{y=1}^{m}[gcd(x,y)=1]\ ...

  5. BZOJ2820:YY的GCD

    Sol 推导:\(n<m,p为质数\) \(ans=\sum_p\sum_{i=1}^{\frac{n}{p}}\mu(i)\frac{n}{pi}\frac{m}{pi}\) \(=\sum_ ...

  6. CF990G GCD Counting(树上莫比乌斯反演,分层图,并查集)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 给定一棵点带权无根树,对于每个 k∈[1,2×105]k\in[1,2\times10 ...

  7. 【香蕉OI】GCD 和 LCM (莫比乌斯反演)

    文章目录 题意 思路 代码 题意 给出 TTT 组询问,每组询问求 ∑i≤n∑j≤m[gcd(i,j)≤a]lcm(i,j)\sum_{i\le n}\sum_{j\le m}[gcd(i,j)\le ...

  8. [Luogu P2257] YY的GCD (莫比乌斯函数)

    题面 传送门:洛咕 Solution 推到自闭,我好菜啊 显然,这题让我们求: \(\large \sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)\in prime]\) 根 ...

  9. [复习]莫比乌斯反演,杜教筛,min_25筛

    [复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...

最新文章

  1. volatile原理与技巧
  2. SVN无法commit解决办法
  3. 解秘 Node.js 单线程实现高并发请求原理,以及串联同步执行并发请求的方案
  4. 联想服务器开机自动重启,解决联想电脑开机一半自动重启的方法
  5. ectouch第六讲 之表常用链接
  6. leetcode--组合总数
  7. ug区域轮廓铣没有重叠距离_UG加工基本操作
  8. 安川机器人如何注释化指令_安川机器人 命令介绍 内部版
  9. cocosBuilder使用总结
  10. Python快捷键大全(PyCharm常用)
  11. VBScript连接各种数据库
  12. SoundPool循环播放
  13. 垃圾分类小程序拍照识别垃圾分类微信小程序开发源码
  14. C++FTP客户端库:ftplibpp的使用
  15. 上瘾读书笔记:让用户养成使用习惯的四大产品逻辑
  16. 2011的总结(感谢自己,感恩他人)【转自我的新浪博客】
  17. Android指纹支付 - android M / P 全适配
  18. SQLite源代码分析----------分词器③
  19. 吴恩达 OpenAI 的Prompt教程笔记 - ChatGPT Prompt Engineering for Developers
  20. 知物由学 | 易盾SaaS系统资损防控体系建设

热门文章

  1. php psr 7,PHP(PSR-7) HTTP 消息接口规范
  2. Windows下快速(快捷)打开service服务应用
  3. 三维重建(二):包裹相位以及绝对相位求解
  4. Mac之UltraEdit
  5. 云邦互联 1GB免费空间(免备案,无广告)
  6. 向SpreadSheetDocument中的LineChart添加新的数据
  7. ubuntu安装flash player插件问题
  8. javascript~获取当前iframe的id和修改iframe属性
  9. .replaceAll is not a function nodejs14不可用 replaceAll
  10. 广域网技术PPP、PPPoE、MPLS、SR(分段路由技术)(HCIA)