【BZOJ2820】YY的GCD(莫比乌斯反演 数论分块)
大意
给定多组\(N\),\(M\),求\(1\le x\le N,1\le y\le M\)并且\(Gcd(x, y)\)为质数的\((x, y)\)有多少对。
思路
我们设\(f(i)\)表示\(Gcd(x,y)=i\)的\((x,y)\)的个数,\(F(i)\)表示\(Gcd(x,y)\%i=0\)的\((x,y)\)的个数。
那么有$$F(i)=\lfloor\frac{N}{i}\rfloor\lfloor\frac{M}{i}\rfloor=\sum_{i\mid d}f(d)$$,
用莫比乌斯反演得到:$$f(i)=\sum_{i\mid d}\mu(\frac{d}{i})\cdot F(d)$$
那么我们要求的\(Ans\)就为:$$Ans=\sum_{p\in prime}f[p]=\sum_{p\in prime}\sum_{p\mid d}\mu(\frac{d}{p})\cdot F(d)$$
即$$Ans=\sum_{p\in prime}\sum_{p\mid d}\mu(\frac{d}{p})\cdot \lfloor\frac{N}{d}\rfloor\lfloor\frac{M}{d}\rfloor$$
上述化简式对于单组数据已经够了,然而,对于多组数据依然有较大的缺陷,考虑优化。
对上述式子变形:$$Ans=\sum_{d=1}^{min(N,M)}\lfloor\frac{N}{d}\rfloor\lfloor\frac{M}{d}\rfloor\cdot(\sum_{p\in prime&p\mid d}\mu(\frac{d}{p}))$$
对于后面的式子,我们可以预先处理好对于每个\(d\)的总和,然后发现前面为一个数论分块,所以可以\(O(T\sqrt{N})\)算。
代码
#include<cstdio>
#include<algorithm>
using namespace std;
const long long ONE=1;
const int MAXV=10000000;
const int MAXN=10000005;
int T,A,B,Miu[MAXN];
long long Sum[MAXN];
int Pcnt,Prime[MAXN],visp[MAXN];
long long Ans;
void Prepare(){
visp[0]=visp[1]=1;Miu[1]=1;
for(int i=2;i<=MAXV;i++){
if(!visp[i]){Prime[++Pcnt]=i;Miu[i]=-1;}
for(int j=1;j<=Pcnt&&i*Prime[j]<=MAXV;j++){
visp[i*Prime[j]]=1;
if(i%Prime[j]==0){
Miu[i*Prime[j]]=0;
break;
}
else Miu[i*Prime[j]]=-Miu[i];
}
}
for(int i=1;i<=Pcnt;i++)
for(int j=1;j*Prime[i]<=MAXV;j++)
Sum[j*Prime[i]]+=Miu[j];
for(int i=1;i<=MAXV;i++)
Sum[i]=Sum[i-1]+Sum[i];
}
int main(){
Prepare();
scanf("%d",&T);
while(T--){Ans=0;
scanf("%d%d",&A,&B);
int lowin=min(A,B);
for(int L=1,R;L<=lowin;L=R+1){
R=min(A/(A/L),B/(B/L));
Ans+=(Sum[R]-Sum[L-1])*(A/L)*(B/L);
}
printf("%lld\n",Ans);
}
}
【BZOJ2820】YY的GCD(莫比乌斯反演 数论分块)的更多相关文章
- [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)有多少对. ...
- Bzoj 2820: YY的GCD(莫比乌斯反演+除法分块)
2820: YY的GCD Time Limit: 10 Sec Memory Limit: 512 MB Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x& ...
- BZOJ2820:YY的GCD(莫比乌斯反演)
Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...
- 洛谷 - P2257 - YY的GCD - 莫比乌斯反演 - 整除分块
https://www.luogu.org/problemnew/show/P2257 求 \(n,m\) 中 \(gcd(i,j)==p\) 的数对的个数 求 $\sum\limits_p \sum ...
- [BZOJ 2154]Crash的数字表格(莫比乌斯反演+数论分块)
[BZOJ 2154]Crash的数字表格(莫比乌斯反演+数论分块) 题面 求 \[\sum_{i=1}^{n} \sum_{j=1}^{m} \mathrm{lcm}(i,j)\] 分析 \[\su ...
- BZOJ2820 YY的GCD 莫比乌斯+系数前缀和
/** 题目:BZOJ2820 YY的GCD 链接:http://www.cogs.pro/cogs/problem/problem.php?pid=2165 题意:神犇YY虐完数论后给傻×kAc出了 ...
- bzoj 2820 YY的GCD 莫比乌斯反演
题目大意: 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 这里就抄一下别人的推断过程了 后面这个g(x) 算的方法就是在线性 ...
- 【BZOJ2820】YY的GCD [莫比乌斯反演]
YY的GCD Time Limit: 10 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description 求1<=x<=N, ...
- BZOJ 2820: YY的GCD [莫比乌斯反演]【学习笔记】
2820: YY的GCD Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1624 Solved: 853[Submit][Status][Discu ...
随机推荐
- Selenium_环境安装(1)
Selenium是一个用于Web应用程序自动化测试工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样. Selenium基本上支持主流的浏览器,包括IE,Mozilla Firef ...
- captcha_生成图片验证码并返回给前端展示
使用pip install captcha 安装模块 import random import string import os import io from captcha.image import ...
- GOF23种设计模式之单例模式(java)
GOF(group of four):四人帮 分类 创建者模式 单例模式 核心作用:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 优点: 由于单例模式只生成一个实例,减少了系统性能开销, ...
- JMeter_性能压测报错address already in use:connect
报错截图如下: 原因分析: 这个问题的原因是windows端口被耗尽了(默认1024-5000),而且操作系统要 2~4分钟才会重新释放这些端口,所以可以增加windows的可用端口来解决.windo ...
- 区别对待 .gz 文件 和 .tar.gz 文件
#检测 tar tvf xxx.tar.gz #解压 tar zxvf #检测 gunzip -tv yyy.gz #解压 gunzip yyy.gz
- vs2017 快捷键 - 总结
1.格式化代码 先选中需要格式的代码,一般是全选[Ctrl+A]后,Ctrl+K+F[按定Ctrl不动,依序点击 K和F,然后再放开 Ctrl ] 2.多行注释 注释: 先CTRL+K,然后CTRL+ ...
- STM32寄存器深入分析
可能很多刚开始学习STM32的小伙伴都有一个疑惑,创建项目时会需要很多头文件,导致学习过程中很难明白那些头文件的作用,虽然知道头文件都是对寄存器的封装,但是怎么封装的就不知道了.这里我以led灯为试验 ...
- Three.js 实现虎年春节3D创意页面
背景 虎年 春节将至,本文使用 React + Three.js 技术栈,实现趣味 3D 创意页面.本文包含的知识点主要包括:ShadowMaterial. MeshPhongMaterial 两种基 ...
- 51 Nod 1133 不重叠的线段 (贪心算法)
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1133 题目分析:感觉这到第不应该被分到二级算法题,比 109 ...
- 【Java】Java8新特性
文章目录 Java8新特性 Lambda表达式的使用 语法格式一:无参,无返回值 语法格式二:Lambda 需要一个参数,但是没有返回值. 语法格式三:数据类型可以省略,因为可由编译器推断得出,称为& ...