【题意】给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对。T<=10^4,N,M<=10^7。

【算法】数论(莫比乌斯反演)

【题解】公式推导见DQSSS。

推到ans= Σp是素数 Σd≤mins μ(d) * (n/pd) * (m/pd),mins=min(n/p,m/p)。

使用枚举取值的方法再枚举素数单次询问复杂度√n*(n/ln n),显然不能满足要求。

问题在于枚举素数,令T=pd,则:

ans= ΣT≤mins (n/T) * (m/T)*Σp|T&&p是素数 μ(T/p),mins=min(n,m)。

后面部分可以枚举素数的倍数预处理出μ前缀和,复杂度O((n/ln n)*ln n)即O(n)。

每次询问再枚举取值O(√n)解决。

总复杂度O(T*√n+n)。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=10000010,N=10000000;
int miu[maxn],mius[maxn],prime[maxn],tot;
ll s[maxn];
bool mark[maxn];
void pre(){miu[1]=1;for(int i=2;i<=N;i++){if(!mark[i])miu[prime[++tot]=i]=-1;for(int j=1;j<=tot&&i*prime[j]<=N;j++){mark[i*prime[j]]=1;if(i%prime[j]==0)break;miu[i*prime[j]]=-miu[i];}}for(int i=1;i<=tot;i++){for(int j=prime[i];j<=N;j+=prime[i])mius[j]+=miu[j/prime[i]];}for(int i=1;i<=N;i++)s[i]=s[i-1]+mius[i];
}
int main(){pre();int T,n,m;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);int pos=0,mins=min(n,m);ll ans=0;for(int i=1;i<=mins;i=pos+1){pos=min(n/(n/i),m/(m/i));ans+=(s[pos]-s[i-1])*(n/i)*(m/i);}printf("%lld\n",ans);}return 0;
}

View Code

将枚举两个数改为枚举乘积和其中一个,即T和p|T,后面的p|T可以O(n log n)贡献处理前缀和。

转载于:https://www.cnblogs.com/onioncyc/p/8274302.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

    Time Limit: 10 Sec  Memory Limit: 512 MB Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1< ...

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

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

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

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

  8. [BZOJ 2820] YY的GCD

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

  9. 【BZOJ 2820】 YY的GCD

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

最新文章

  1. 凸集+非凸集+凸函数+非凸函数
  2. 2.10 局部最优的问题-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  3. 2019年,你需要关注这些Node API和Web框架
  4. 关于在pycharm下提示ModuleNotFoundError: No module named 'XXX' 的一种可能
  5. PHP(三)——PHP基础知识
  6. 1_MVC+EF+Autofac(dbfirst)轻型项目框架_core层(以登陆为例)
  7. dz论坛服务器技术支持,服务器更换 升级 dz论坛首页 dz其他页面打开为空白解决方法...
  8. centos7定制linux镜像,自定制Centos7.3系统镜像(ISO)
  9. MathType 换行后无法对齐,怎么都对不齐!!!强迫症晚期(见图)
  10. Arduino 各种模块篇 DHT11 温度湿度 数字模块 单总线
  11. [20151112]ORA-01450?3215?.txt
  12. windows2000/xp运行命令全集
  13. 李彦宏告诫年轻人:向前看两年
  14. 【fabric实战指南二】Fabric v1.0 部署过程原理详解
  15. 技术人生:立志、勤学、改过、责善
  16. linux 性能测试 多线程,sysbench - linux多线程性能测试工具
  17. Matlab无约束优化
  18. 技术总监的日常工作,看下你具备几条
  19. 【Python实战】推文助手好用吗?真的能赚钱吗?教您一招,有了这款微信自动发送消息小助手,文字自动跳出来~赚麻了(赶紧收藏)
  20. 苹果cmsv10仿91美剧网自适应收录好的免费模板

热门文章

  1. 地下城与勇士(DNF)
  2. 仿射密码python_CTF-仿射密码(python)
  3. 7.24张小龙内部分享:如何把产品做简单(PM必读)
  4. 马政委是怎样炼成的?
  5. js 遍历对象方法大全
  6. Java中类的继承详解(转载)
  7. autowire自动装配
  8. 利用jQuery实现表单里的增加、删除和修改
  9. Latex Beamer 制作幻灯片时文本在页面居中分布
  10. 鸿蒙大陆无cdp闪,鸿蒙大陆2.1正式版隐藏密码及攻略