题链:

http://www.lydsy.com/JudgeOnline/problem.php?id=2820

题解:

莫比乌斯反演

先看看这个题:HDU 1695 GCD(本题简化版)

HDU 1695 GCD:求满足x∈(1~n)和y∈(1~m),且gcd(x,y)=k的(x,y)的对数。

而这个k是给定的。

可以由莫比乌斯反演得到:(详见●HDU 1695 GCD

$ANS=\sum_{d=1}^{n}\mu(d)\times\lfloor\frac{n}{d}\rfloor\times\lfloor\frac{m}{d}\rfloor$


但是本题的k是所有的质数,额...

我们可以先枚举一个质数p,然后仿照上面的做法,可以得到:

$ANS=\sum_p \sum_{d=1}^{n}\mu(d)\times\lfloor\frac{n/p}{d}\rfloor\times\lfloor\frac{m/p}{d}\rfloor$

这个复杂度还无法满足本题的数据。

然后把上面的求和式做如下化简:

令$T=pd$,

那么:$ANS=\sum_{T=1}^{n}{(}{\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor} \sum_{p|T}\mu(\frac{T}{p}){)}$

如果可以预处理出$\sum_{p|T}\mu(\frac{T}{p})$的值,

那么上式就可以$O(n)$求出,

如果运用向下取整的特性进行分块计算,就可以达到$O(\sqrt{n})$的复杂度。

至于$\sum_{p|T}\mu(\frac{T}{p})$,有两种求法:

设$sum[T]=\sum_{p|T}\mu(\frac{T}{p})$

1.枚举每个质数p,然后把他的倍数$T=\lambda p的sum[T]+=\mu(\frac{T}{p})$

2.运用$\mu$是积性函数的性质,可以在线型筛时求出。

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#define MAXN 10000050
using namespace std;
long long ANS;
int musum[MAXN],mu[MAXN];
void Prime_Sieve(){
static bool np[MAXN],dp[MAXN]; mu[1]=1;
static int prime[MAXN],pnt;
for(int i=2;i<=10000000;i++){
if(!np[i]) prime[++pnt]=i,dp[i]=1,mu[i]=-1,musum[i]=1;
for(int j=1;j<=pnt&&i<=10000000/prime[j];j++){
np[i*prime[j]]=1; dp[i*prime[j]]=dp[i]&&i%prime[j];
mu[i*prime[j]]=i%prime[j]?-mu[i]:0;
if(i%prime[j]==0) musum[i*prime[j]]=dp[i]?mu[i]:0;
else musum[i*prime[j]]=musum[i]*mu[prime[j]]+mu[i];
if(i%prime[j]==0) break;
}
}
for(int i=1;i<=10000000;i++) musum[i]+=musum[i-1];
}
int main(){
int n,m,Case,mini;
Prime_Sieve(); scanf("%d",&Case);
//while(scanf("%d",&n)) printf("%d\n",musum[n]);
while(Case--){
scanf("%d%d",&n,&m); mini=min(n,m); ANS=0;
for(int i=1,last;i<=mini;i=last+1){
last=min(n/(n/i),m/(m/i));
ANS+=1ll*(musum[last]-musum[i-1])*(n/i)*(m/i);
}
printf("%lld\n",ANS);
}
return 0;
}

  

●BZOJ 2820 YY的GCD的更多相关文章

  1. 【莫比乌斯反演】关于Mobius反演与gcd的一些关系与问题简化(bzoj 2301 Problem b&&bzoj 2820 YY的GCD&&BZOJ 3529 数表)

    首先我们来看一道题  BZOJ 2301 Problem b Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd( ...

  2. [BZOJ 2820] YY的gcd(莫比乌斯反演+数论分块)

    [BZOJ 2820] YY的gcd(莫比乌斯反演+数论分块) 题面 给定N, M,求\(1\leq x\leq N, 1\leq y\leq M\)且gcd(x, y)为质数的(x, y)有多少对. ...

  3. BZOJ 2820: YY的GCD [莫比乌斯反演]【学习笔记】

    2820: YY的GCD Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1624  Solved: 853[Submit][Status][Discu ...

  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(莫比乌斯反演+除法分块)

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

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

    题目大意: 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 这里就抄一下别人的推断过程了 后面这个g(x) 算的方法就是在线性 ...

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

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

  8. BZOJ 2820 YY的GCD(莫比乌斯函数)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2820 题意:给定n,m.求1<=x<=n, 1<=y<=m且Gc ...

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

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

随机推荐

  1. 201621123040《Java程序设计》第13周学习总结

    1.本周学习总结 2.为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 2.1简述你想为你的系统增加什么网络功能?设计思路是什么? 创建服务器端端口(3333),当用户以客户端身份访问 ...

  2. 项目Alpha冲刺Day2

    一.会议照片 二.项目进展 1.今日安排 初步搭建后台框架,根据昨天的最终设计再修改原型,成功使用powerDesigner导出sql. 2.问题困难 使用了比较多的框架,而且是首次尝试纯java配置 ...

  3. 增加Linux虚拟机的硬盘空间

    原配置为40G,现需要增加到60G,操作方法如下: 一.虚拟机关机,在编辑设置里调整硬盘空间到60G 二.虚拟机开机,扩展硬盘空间 1.安装gparted,命令如下 sudo apt-get inst ...

  4. BizTalk Server 2010高可用方案

    BizTalk Server 2010高可用方案 本文介绍了 Microsoft BizTalk Server 中通过对主机的各层进行扩展提供高可用性的方案. 分隔各个区域的功能分为不同的主机和中的层 ...

  5. Python内置函数(59)——open

    英文文档: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, ope ...

  6. Apollo单向SSL认证(2)

    一.生成ks和ts 二.连接测试 1.配置 2.测试

  7. 安装 go 语言环境

    操作系统: CentOS 6.9_x64 go语言版本: 1.8.3 安装go 这里直接安装二进制,其它方式请自行搜索. 1.下载并安装go 命令如下: ? 1 2 3 wget https://st ...

  8. Docker加速器(阿里云)

    1. 登录阿里开发者平台: https://dev.aliyun.com/search.html,https://cr.console.aliyun.com/#/accelerator,生成专属链接 ...

  9. 操作MP3文件的元数据

    参见:http://jingyan.baidu.com/article/03b2f78c4d5eae5ea237aee7.html 一.MP3文件的元数据 一个规则的MP3文件大致含有3个部分: TA ...

  10. Zookeeper分布式服务协调组件

    1.简介 Zookeeper是一个分布式服务协调组件,是Hadoop.Hbase.Kafka的重要组件,它是一个为分布式应用提供一致性服务的组件.   Zookeeper的目标就是封装好复杂易出错的服 ...