[BZOJ]2820: YY的GCD
Time Limit: 10 Sec Memory Limit: 512 MB
Description
Input
Output
Sample Input
10 10
100 100
Sample Output
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相关推荐
- 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(莫比乌斯反演)
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
[题意]给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对.T<=10^4,N,M<=10^7. [算法]数论(莫比乌 ...
- 【BZOJ 2820】 YY的GCD
2820: YY的GCD Time Limit: 10 Sec Memory Limit: 512 MB Submit: 807 Solved: 404 [ Submit][ Status] ...
最新文章
- Oracle 截取字符串,取系统时间
- 阿里、京东高级算法专家讲述数学在企业中的应用
- JMETER 为什么需要分布式
- Flex 弹性布局(****************************************************)
- HTML中的图像和链接
- CI 里去掉index.php 并 识别css js 文件 技巧
- 蓝桥杯包子凑数-完全背包
- DL学习笔记(1)整体理解
- WIN32汇编对话框的使用
- NDK在Linux下载配置以及C、C++编译配置(交叉编译)
- [自学考试] [02142数据结构导论] Part1 概论
- 【MATLAB】报错:数组索引必须为正整数或逻辑值
- 网页前端第五次培训(JS的一些基本使用)
- QT6程序全屏和隐藏鼠标指针笔记
- 【shell】shell创建虚拟环境virtualenv(-bash: virtualenv: command not found)
- 最佳的75个安全工具
- IDEA两种方式设置类注释模板
- 主成分分析与其在人脸识别中的应用
- OpenCV图像无缝融合-seamlessClone介绍与使用(附Python/C++源码)
- 如何对udp端口进行扫描
热门文章
- 网络数据采集技术—Java网络爬虫入门与实战 书稿纠错
- 集成学习voting Classifier在sklearn中的实现
- 数据可视化系列(一):Matplotlib初相识
- 使用pytorch查看中间层特征矩阵以及卷积核参数
- 小蒜的A+B 计蒜客 - T1283
- 21南阳理工oj新生赛Round#5--这是一道二分题
- 对C++继承,封装,多态的理解
- python有哪些知识_Python有哪些基础知识
- 计算机软件通常分为两大类 它们是,计算机考试题库:计算机考试练习题(79)...
- python 神经网络_推荐 :用Python实现神经网络(附完整代码)!