博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ2820】YY的GCD
阅读量:6271 次
发布时间:2019-06-22

本文共 1812 字,大约阅读时间需要 6 分钟。

【BZOJ2820】YY的GCD

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

不妨设\(n<m\)

答案为\(\displaystyle\sum_{g为质数}\sum_{i=1}^{\lfloor \frac{n}{g} \rfloor}\sum_{j=1}^{\lfloor \frac{n}{g} \rfloor}[gcd(i,j)==1]\)

根据套路 ,后面的\([gcd(i,j)==1]可以写成\displaystyle \sum_{d|i,d|j}\mu(d)\)
和式变换一下:\(\displaystyle \sum_{g为质数}\sum_{d=1}^{\lfloor \frac{n}{g} \rfloor}\mu(d)\lfloor \frac{n}{gd} \rfloor\lfloor \frac{m}{gd} \rfloor\)

根据套路:设\(T=gd,则\displaystyle\sum_{T=1}^{n}\sum_{d|T且\frac{n}{d}为质数}\mu(d)\lfloor \frac{n}{gd} \rfloor\lfloor \frac{m}{gd} \rfloor\)

又是套路:对于后面两个除法,我们数论分块就可以了。对于\(\sum_{d|T且\frac{n}{d}为质数}\mu(d)\)我们可以预处理出前缀和。

代码:

#include
#define N 10000005#define ll long longusing namespace std;int T;int pri[700000];ll mu[N],sum[N];bool vis[N];void pre() { mu[1]=1; for(int i=2;i<=10000000;i++) { if(!vis[i]) pri[++pri[0]]=i,mu[i]=-1; for(int j=1;j<=pri[0]&&i*pri[j]<=10000000;j++) { vis[i*pri[j]]=1; if(i%pri[j]==0) { mu[i*pri[j]]=0; break; } mu[i*pri[j]]=-mu[i]; } } for(ll i=1;i<=pri[0];i++) { for(ll j=1;j*pri[i]<=10000000;j++) { sum[j*pri[i]]+=mu[j]; } } for(ll i=1;i<=10000000;i++) sum[i]+=sum[i-1];}ll n,m;int main() { pre(); scanf("%d",&T); while(T--) { scanf("%lld%lld",&n,&m); if(n>m) swap(n,m); ll last,ans=0; for(ll i=1;i<=n;i=last+1) { last=min(n/(n/i),m/(m/i)); ans+=(sum[last]-sum[i-1])*(n/i)*(m/i); } cout<
<<'\n'; } return 0;}

转载于:https://www.cnblogs.com/hchhch233/p/9993024.html

你可能感兴趣的文章
02@在类的头文件中尽量少引入其他头文件
查看>>
JAVA IO BIO NIO AIO
查看>>
input checkbox 复选框大小修改
查看>>
网吧维护工具
查看>>
BOOT.INI文件参数
查看>>
vmstat详解
查看>>
新年第一镖
查看>>
unbtu使用笔记
查看>>
MaxCompute 学习计划(一)
查看>>
OEA 中 WPF 树型表格虚拟化设计方案
查看>>
Android程序开发初级教程(一) 开始 Hello Android
查看>>
使用Gradle打RPM包
查看>>
“我意识到”的意义
查看>>
淘宝天猫上新辅助工具-新品填表
查看>>
再学 GDI+[43]: 文本输出 - 获取已安装的字体列表
查看>>
nginx反向代理
查看>>
操作系统真实的虚拟内存是什么样的(一)
查看>>
hadoop、hbase、zookeeper集群搭建
查看>>
python中一切皆对象------类的基础(五)
查看>>
modprobe
查看>>