【BZOJ】2820: YY的GCD
【题意】给定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相关推荐
- BZOJ 2820 YY的GCD 莫比乌斯反演
2820: YY的GCD Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y) ...
- bzoj 2820: YY的GCD(莫比乌斯反演)
2820: YY的GCD Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2111 Solved: 1137 [Submit][Status][Di ...
- BZOJ 2820: YY的GCD
2820: YY的GCD Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1705 Solved: 908 [Submit][Status][Dis ...
- bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛
Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...
- [BZOJ]2820: YY的GCD
Time Limit: 10 Sec Memory Limit: 512 MB Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1< ...
- BZOJ 2820 YY的GCD(莫比乌斯反演)
Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对,kAc这种傻×必 ...
- BZOJ 2820 YY的GCD 莫比乌斯反演
题意:链接 方法:莫比乌斯反演 解析: 这题跟上一篇博客有一点差别,当然我们能够考虑枚举素数这个大暴力.只是当你A掉这道题后发现正解?都将近5s时.就放弃了这个念头. 相同的式子我们能够直接搬过来.p ...
- [BZOJ 2820] YY的GCD
题意 求下式的值: \[ \sum_{i=1}^n\sum_{j=1}^m \mathbb{P}(\gcd(i,j)) \] 其中 \(\mathbb{P}(x)\) 当 \(x\) 为质数时为 \( ...
- 【BZOJ 2820】 YY的GCD
2820: YY的GCD Time Limit: 10 Sec Memory Limit: 512 MB Submit: 807 Solved: 404 [ Submit][ Status] ...
最新文章
- 凸集+非凸集+凸函数+非凸函数
- 2.10 局部最优的问题-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
- 2019年,你需要关注这些Node API和Web框架
- 关于在pycharm下提示ModuleNotFoundError: No module named 'XXX' 的一种可能
- PHP(三)——PHP基础知识
- 1_MVC+EF+Autofac(dbfirst)轻型项目框架_core层(以登陆为例)
- dz论坛服务器技术支持,服务器更换 升级 dz论坛首页 dz其他页面打开为空白解决方法...
- centos7定制linux镜像,自定制Centos7.3系统镜像(ISO)
- MathType 换行后无法对齐,怎么都对不齐!!!强迫症晚期(见图)
- Arduino 各种模块篇 DHT11 温度湿度 数字模块 单总线
- [20151112]ORA-01450?3215?.txt
- windows2000/xp运行命令全集
- 李彦宏告诫年轻人:向前看两年
- 【fabric实战指南二】Fabric v1.0 部署过程原理详解
- 技术人生:立志、勤学、改过、责善
- linux 性能测试 多线程,sysbench - linux多线程性能测试工具
- Matlab无约束优化
- 技术总监的日常工作,看下你具备几条
- 【Python实战】推文助手好用吗?真的能赚钱吗?教您一招,有了这款微信自动发送消息小助手,文字自动跳出来~赚麻了(赶紧收藏)
- 苹果cmsv10仿91美剧网自适应收录好的免费模板