莫比乌斯反演套路一--令t=pd--BZOJ2820: YY的GCD
t<=10000组询问:有多少x,y,满足$x\epsilon [1,n],y\epsilon [1,m],(x,y)为质数$。n,m<=1e7。
首先式子列出来,f(i)--1<=x<=n,1<=y<=m中有多少(x,y)=i,g(i)--1<=x<=n,1<=y<=m中有多少i|(x,y),$g(i)=\sum_{i|d} f(d) ------> f(i)=\sum_{i|d} \mu(\frac{d}{i})g(d)$,而$g(i)=\frac{n}{i}\frac{m}{i}$,因此$f(i)=\sum_{i|d} \mu(\frac{d}{i})\frac{n}{d}\frac{m}{d}$,而(x,y)=k的充要条件是(x/k,y/k)=1,因此答案就$ans=\sum_{p是质数}^{min(n,m)}\sum_{d=1}^{min(n,m)}\mu(d)\frac{n}{pd}\frac{m}{pd}=\sum_{t=1}^{min(n,m)}\frac{n}{t}\frac{m}{t}\sum_{p|t}\mu(\frac{t}{p})$
前面那个sigma可以根号解决,而后面那个东西只跟t有关,因此预处理下即可。
//#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
//#include<bitset>
#include<algorithm>
//#include<cmath>
using namespace std; int T,n,m;
#define maxn 10000011
int miu[maxn],prime[maxn],lp,summiu[maxn]; bool notprime[maxn];
void pre(int n)
{
lp=; miu[]=; summiu[]=;
for (int i=;i<=n;i++)
{
if (!notprime[i]) {prime[++lp]=i; miu[i]=-;}
for (int j=;j<=lp && 1ll*prime[j]*i<=n;j++)
{
notprime[i*prime[j]]=;
if (i%prime[j]) miu[i*prime[j]]=-miu[i];
else {miu[i*prime[j]]=; break;}
}
}
for (int i=;i<=lp;i++)
for (int j=prime[i],cnt=;j<=n;j+=prime[i],cnt++)
summiu[j]+=miu[cnt];
for (int i=;i<=n;i++) summiu[i]+=summiu[i-];
} #define LL long long
int main()
{
pre();
scanf("%d",&T);
while (T--)
{
scanf("%d%d",&n,&m);
LL ans=;
for (int i=,to=min(n,m),last;i<=to;i=last+)
{
last=min(n/(n/i),m/(m/i));
ans+=1ll*(n/i)*(m/i)*(summiu[last]-summiu[i-]);
}
printf("%lld\n",ans);
}
return ;
}
莫比乌斯反演套路一--令t=pd--BZOJ2820: YY的GCD的更多相关文章
- BZOJ2820 YY的GCD 【莫比乌斯反演】
BZOJ2820 YY的GCD Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, ...
- BZOJ2820 YY的GCD 莫比乌斯+系数前缀和
/** 题目:BZOJ2820 YY的GCD 链接:http://www.cogs.pro/cogs/problem/problem.php?pid=2165 题意:神犇YY虐完数论后给傻×kAc出了 ...
- [BZOJ2820]YY的GCD
[BZOJ2820]YY的GCD 试题描述 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少 ...
- BZOJ2820: YY的GCD(反演)
题解 题意 题目链接 Sol 反演套路题.. 不多说了,就是先枚举一个质数,再枚举一个约数然后反演一下. 最后可以化成这样子 \[\sum_{i = 1}^n \frac{n}{k} \frac{n} ...
- 莫比乌斯反演套路二--(n/d)(m/d)给提出来--BZOJ3529: [Sdoi2014]数表
一个数表上第i行第j列表示能同时整除i和j的自然数,Q<=2e4个询问,每次问表上1<=x<=n,1<=y<=m区域内所有<=a的数之和.n,m<=1e5,a ...
- 莫比乌斯反演套路三、四--BZOJ2154: Crash的数字表格 && BZOJ2693: jzptab
t<=1e4个询问每次问n,m<=1e7,$\sum_{1\leqslant x \leqslant n,1 \leqslant y\leqslant m}lcm(x,y)$. 首先题目要 ...
- BZOJ2820:YY的GCD(莫比乌斯反演)
Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...
- 【莫比乌斯反演】BZOJ2820 YY的GCD
Description 求有多少对(x,y)的gcd为素数,x<=n,y<=m.n,m<=1e7,T<=1e4. Solution 因为题目要求gcd为素数的,那么我们就只考虑 ...
- Bzoj-2820 YY的GCD Mobius反演,分块
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2820 题意:多次询问,求1<=x<=N, 1<=y<=M且gcd( ...
随机推荐
- 转】SparkSQL中的内置函数
原博文来自于: http://blog.csdn.net/u012297062/article/details/52207934 感谢! 使用Spark SQL中的内置函数对数据进行分析,Spa ...
- java 对象流的简单使用
对象的输入输出流的作用: 用于写入对象 的信息和读取对象的信息. 使得对象持久化. ObjectInputStream : 对象输入流 ObjectOutPutStream :对象输出流 ...
- Swift 基础语法入门(一)
一.变量和常量 1.声明常量和变量 用let来声明常量 let radius = 10 用var来声明变量 var age = 20 或者是var x = 0.0, y = 0.0, z = 0 ...
- java synchronized(object/this)的 区别
1.synchronized(object) package test.thread; import java.io.IOException; import org.junit.Test; /* * ...
- -webkit/IE/Firefox的一些样式
仅限于-webkit的样式特效:-webkit-overflow-scrolling:touch;滚动时回弹效果:如果出现偶尔卡住不动的情况,那么在使用该属性的元素上不设置定位或者手动设置定位为sta ...
- Int 1的实现过程 (一)
闲话少说,直奔主题,首先OD载入一个程序,然后执行一下单步(调试器会将TF置1) 此时,CPU会在基于当前线程上下文的环境中,进入int 1的中断门,也就是KiTrap01 kd> !idt - ...
- Python游戏开发入门
Pygame简介与安装 1.Pygame安装 pip install pygame2.检测pygame是否安装成功 python -m pygame.examples.aliens Pygame最小开 ...
- Java集合(二)--Iterator和Iterable
Iterable: public interface Iterable<T> { Iterator<T> iterator(); } 上面是Iterable源码,只有一个ite ...
- Js获取操作系统版本 && 获得浏览器版本
//利用原生Js获取操作系统版本function getOS() { var sUserAgent = navigator.userAgent; var isWin = (navigator.plat ...
- OAuth - 第三方登录的原理
第三方登录的原理 所谓第三方登录,实质就是 OAuth 授权.用户想要登录 A 网站,A 网站让用户提供第三方网站的数据,证明自己的身份.获取第三方网站的身份数据,就需要 OAuth 授权. 举例来说 ...