题目链接

大意

给定多组\(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(莫比乌斯反演 数论分块)的更多相关文章

  1. [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)有多少对. ...

  2. Bzoj 2820: YY的GCD(莫比乌斯反演+除法分块)

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

  3. BZOJ2820:YY的GCD(莫比乌斯反演)

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

  4. 洛谷 - P2257 - YY的GCD - 莫比乌斯反演 - 整除分块

    https://www.luogu.org/problemnew/show/P2257 求 \(n,m\) 中 \(gcd(i,j)==p\) 的数对的个数 求 $\sum\limits_p \sum ...

  5. [BZOJ 2154]Crash的数字表格(莫比乌斯反演+数论分块)

    [BZOJ 2154]Crash的数字表格(莫比乌斯反演+数论分块) 题面 求 \[\sum_{i=1}^{n} \sum_{j=1}^{m} \mathrm{lcm}(i,j)\] 分析 \[\su ...

  6. BZOJ2820 YY的GCD 莫比乌斯+系数前缀和

    /** 题目:BZOJ2820 YY的GCD 链接:http://www.cogs.pro/cogs/problem/problem.php?pid=2165 题意:神犇YY虐完数论后给傻×kAc出了 ...

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

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

  8. 【BZOJ2820】YY的GCD [莫比乌斯反演]

    YY的GCD Time Limit: 10 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description 求1<=x<=N, ...

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

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

随机推荐

  1. 年功序列c++游戏

    题目描述 在虚拟国度里多了很多 Virtual oier,为了树立对后辈的威信,从第 11 个 Virtual oier 开始的 oier 们搞起了年功序列的制度. 虚拟国度的创始人 oier Cht ...

  2. hisql ORM 查询语句使用教程

    HiSql 提供一个可以适合多种数据库的中间查询语法,不需要关注各个数据库的语法特性,通过HiSql写语句可以在常用的不同类型数据库中执行,且语法与Sql语境类似一看就懂一学就会 hisql.net ...

  3. class、抽象类、接口区别

    Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 由于抽象类不 ...

  4. VUE3 之 全局组件与局部组件

    1. 概述 老话说的好:忍耐是一种策略,同时也是一种性格磨炼. 言归正传,今天我们来聊聊 VUE 的全局组件与局部组件. 2. 全局组件 2.1 不使用组件的写法  <body> < ...

  5. Android学习笔记2

    4,用intent在activity之间传递数据(两个Activity可能不是在一个应用程序中) (1),从MainActivity向HelloActivity传递参数123 package com. ...

  6. 【刷题-LeetCode】264. Ugly Number II

    Ugly Number II Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose ...

  7. Redis作缓存

    缓存策略三要素:缓存命中率   缓存更新策略  最大缓存容量.衡量一个缓存方案的好坏标准是:缓存命中率.缓存命中率越高,缓存方法设计的越好. 三者之间的关系为:当缓存到达最大的缓存容量时,会触发缓存更 ...

  8. vue体验

    1.创建工作区 2.点击添加文件 3.新建一个html文件,并输入!+tab  自动生成html结构 4.输入div#app,生成头部 <!DOCTYPE html> <html l ...

  9. sqoop如何指定pg库的模式

    摘要:sqoop如何指定pg库的模式? 本文分享自华为云社区<[Hadoop]关于Sqoop导出数据到postgresql时schema的设置问题>,作者:Copy工程师 . 说明 使用s ...

  10. MyCms 开源自媒体系统,系统配置字段说明

    功能说明 站点名称:站点的简要描述名称,没有启用SEO插件时,将用此字段用作站点标题. 站点地址:站点的完整地址(包含 http/https),此字段有多处依赖用于生成链接,请正确填写. 站点logo ...