Time Limit: 10 Sec  Memory Limit: 512 MB

Description

神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种傻×必然不会了,于是向你来请教……多组输入

Input

第一行一个整数T 表述数据组数接下来T行,每行两个正整数,表示N, M

Output

T行,每行一个整数表示第i组数据的结果

Sample Input

  2
  10 10
  100 100

Sample Output

  30
  2791

HINT

  T = 10000
  N, M <= 10000000

Solution

  枚举质数p,答案即为$\sum_{p}\sum_{i=1}^{\left \lfloor n/p \right \rfloor}\sum_{j=1}^{\left \lfloor m/p \right \rfloor}\left [  gcd(i,j)=1\right ]=\sum_{p}\sum_{i=1}^{\left \lfloor n/p \right \rfloor}\sum_{j=1}^{\left \lfloor m/p \right \rfloor}\sum_{d|i,d|j}\mu (d)$

  考虑每个d,则原式等于$\sum_{p}\sum_{d=1}^{\left\lfloor min(n,m)/p \right\rfloor}\left\lfloor \frac{n}{pd} \right\rfloor \left\lfloor \frac{m}{pd} \right\rfloor \mu (d)$

  令k=pd,得到$\sum_{k=1}^{min(n,m)}\left\lfloor \frac{n}{k} \right\rfloor \left\lfloor \frac{m}{k} \right\rfloor \sum_{p|k}\mu(\frac{k}{p})$

  用筛法可以预处理出每个k对应的$\sum_{p|k}\mu(\frac{k}{p})$,前缀和后利用$\left\lfloor \frac{n}{k} \right\rfloor \left\lfloor \frac{m}{k} \right\rfloor$只有$O(\sqrt{n})$种取值,我们可以在$O(\sqrt{n})$的时间内计算每次询问,总复杂度$O(n+T\sqrt{n})$。

Code

#include<cstdio>
#include<algorithm>
using namespace std;
#define ll long long
inline int read()
{int x;char c;while((c=getchar())<'0'||c>'9');for(x=c-'0';(c=getchar())>='0'&&c<='9';)x=(x<<3)+(x<<1)+c-'0';return x;
}
#define MN 10000000
int mu[MN+5],p[MN+5],pn;
ll f[MN+5];
bool u[MN+5];
int main()
{int T=read(),n,m,i,j;ll ans;for(mu[1]=1,i=2;i<=MN;++i){if(!u[i])p[++pn]=i,mu[i]=-1;for(j=1;i*p[j]<=MN&&(u[i*p[j]]=1);++j)if(i%p[j])mu[i*p[j]]=-mu[i];else break;}for(i=1;i<=pn;++i)for(j=1;j*p[i]<=MN;++j)f[j*p[i]]+=mu[j];for(i=1;i<=MN;++i)f[i]+=f[i-1];while(T--){n=read();m=read();ans=0;for(i=1;i<=n&&i<=m;i=j+1)j=min(n/(n/i),m/(m/i)),ans+=(f[j]-f[i-1])*(n/i)*(m/i);printf("%lld\n",ans);}
}

转载于:https://www.cnblogs.com/ditoly/p/BZOJ2820.html

[BZOJ]2820: YY的GCD相关推荐

  1. BZOJ 2820 YY的GCD 莫比乌斯反演

    2820: YY的GCD Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y) ...

  2. bzoj 2820: YY的GCD(莫比乌斯反演)

    2820: YY的GCD Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 2111  Solved: 1137 [Submit][Status][Di ...

  3. BZOJ 2820: YY的GCD

    2820: YY的GCD Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 1705  Solved: 908 [Submit][Status][Dis ...

  4. bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛

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

  5. BZOJ 2820 YY的GCD(莫比乌斯反演)

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

  6. BZOJ 2820 YY的GCD 莫比乌斯反演

    题意:链接 方法:莫比乌斯反演 解析: 这题跟上一篇博客有一点差别,当然我们能够考虑枚举素数这个大暴力.只是当你A掉这道题后发现正解?都将近5s时.就放弃了这个念头. 相同的式子我们能够直接搬过来.p ...

  7. [BZOJ 2820] YY的GCD

    题意 求下式的值: \[ \sum_{i=1}^n\sum_{j=1}^m \mathbb{P}(\gcd(i,j)) \] 其中 \(\mathbb{P}(x)\) 当 \(x\) 为质数时为 \( ...

  8. 【BZOJ】2820: YY的GCD

    [题意]给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对.T<=10^4,N,M<=10^7. [算法]数论(莫比乌 ...

  9. 【BZOJ 2820】 YY的GCD

    2820: YY的GCD Time Limit: 10 Sec   Memory Limit: 512 MB Submit: 807   Solved: 404 [ Submit][ Status] ...

最新文章

  1. Oracle 截取字符串,取系统时间
  2. 阿里、京东高级算法专家讲述数学在企业中的应用
  3. JMETER 为什么需要分布式
  4. Flex 弹性布局(****************************************************)
  5. HTML中的图像和链接
  6. CI 里去掉index.php 并 识别css js 文件 技巧
  7. 蓝桥杯包子凑数-完全背包
  8. DL学习笔记(1)整体理解
  9. WIN32汇编对话框的使用
  10. NDK在Linux下载配置以及C、C++编译配置(交叉编译)
  11. [自学考试] [02142数据结构导论] Part1 概论
  12. 【MATLAB】报错:数组索引必须为正整数或逻辑值
  13. 网页前端第五次培训(JS的一些基本使用)
  14. QT6程序全屏和隐藏鼠标指针笔记
  15. 【shell】shell创建虚拟环境virtualenv(-bash: virtualenv: command not found)
  16. 最佳的75个安全工具
  17. IDEA两种方式设置类注释模板
  18. 主成分分析与其在人脸识别中的应用
  19. OpenCV图像无缝融合-seamlessClone介绍与使用(附Python/C++源码)
  20. 如何对udp端口进行扫描

热门文章

  1. 网络数据采集技术—Java网络爬虫入门与实战 书稿纠错
  2. 集成学习voting Classifier在sklearn中的实现
  3. 数据可视化系列(一):Matplotlib初相识
  4. 使用pytorch查看中间层特征矩阵以及卷积核参数
  5. 小蒜的A+B 计蒜客 - T1283
  6. 21南阳理工oj新生赛Round#5--这是一道二分题
  7. 对C++继承,封装,多态的理解
  8. python有哪些知识_Python有哪些基础知识
  9. 计算机软件通常分为两大类 它们是,计算机考试题库:计算机考试练习题(79)...
  10. python 神经网络_推荐 :用Python实现神经网络(附完整代码)!