求 $\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)\in prime]$
 
按套路前提 $gcd(i,j)$
 
$\Rightarrow\sum_{d=1}^{n}d\in prime\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)==d]$
 
后面的 $\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)==d]$ 是反演模板
 
$\Rightarrow \sum_{b=1}^{\left \lfloor \frac{n}{d} \right \rfloor}\mu(b)\left \lfloor \frac{n}{db} \right \rfloor \left \lfloor \frac{m}{db} \right \rfloor$
 
答案为 $\sum_{d=1}^{n}d\in prime \sum_{b=1}^{\left \lfloor \frac{n}{d} \right \rfloor}\mu(b)\left \lfloor \frac{n}{db} \right \rfloor \left \lfloor \frac{m}{db} \right \rfloor$
 
用这个式子整除分块算是 $O(n)$ 的,我们优化一下.
 
令 $T=db$
 
则原式 $=\sum_{T=1}^{n}\left \lfloor \frac{n}{T} \right \rfloor\left \lfloor \frac{m}{T} \right \rfloor\sum_{d|T,d\in prime}\mu(\frac{T}{d})$
 
发现后面的 $\sum_{d|T,d\in prime}\mu(\frac{T}{d})$ 可以提前预处理(只需枚举质数并暴力更新就行)
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#define maxn 10000009
const long long N = 10000009 ;
#define ll long long
#define setIO(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
using namespace std;
int vis[maxn],prime[maxn],mu[maxn],g[maxn],tot;
long long sumv[maxn];
void init(){
mu[1]=1;
for(int i=2;i<maxn;++i) {
if(!vis[i]) { prime[++tot]=i,mu[i]=-1; }
for(int j=1;j<=tot && (ll)prime[j]*i < (ll)maxn;++j)
{
vis[prime[j]*i]=1;
if(i % prime[j]==0) {
mu[i * prime[j]]=0;
break;
}
mu[i * prime[j]]=-mu[i];
}
}
for(int i=1;i<=tot;++i)
for(ll j=1;(ll)j*prime[i]<N;++j)
g[prime[i]*j]+=mu[j];
for(int i=1;i<=10000000;++i) sumv[i] = (long long)sumv[i-1]+g[i];
}
ll work(int n,int m) {
if(n>m) swap(n,m);
long long ans=0;
for(ll i=1,j;i<=n;i=j+1) {
j = min(n/(n/i),m/(m/i));
ans += (n/i) * (m/i) * (sumv[j] - sumv[i-1]);
}
return ans;
}
int main(){
//setIO("input");
init();
int T,x,y; scanf("%d",&T);
while(T--) scanf("%d%d",&x,&y),printf("%lld\n",work(x,y));
return 0;
}

  

BZOJ 2820: 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 MBSubmit: 1624  Solved: 853[Submit][Status][Discu ...

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

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

  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 莫比乌斯反演

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

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

    我们可以枚举每一个质数,那么答案就是 $\sum_{p}\sum_{d<=n}\mu(d)*\lfloor n / pd \rfloor *\lfloor m / pd \rfloor$ 直接做 ...

  7. 【莫比乌斯反演】关于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( ...

  8. 【刷题】BZOJ 2820 YY的GCD

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

  9. BZOJ 2820 luogu 2257 yy的gcd (莫比乌斯反演)

    题目大意:求$gcd(i,j)==k,i\in[1,n],j\in[1,m] ,k\in prime,n,m<=10^{7}$的有序数对个数,不超过10^{4}次询问 莫比乌斯反演入门题 为方便 ...

随机推荐

  1. 三维地图中的A*寻路

    跟二维地图原理一样,只不过搜索方向多了,二维只搜8个方向,而三维要搜26个方向. 不懂的看我以前写的文章,这里直接贴代码: #include <iostream> #include < ...

  2. BZOJ 1042: [HAOI2008]硬币购物 容斥原理_背包_好题

    Description 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买s i的价值的东西.请问每次有多少种付款方法. 题解: 十分喜 ...

  3. MooFest 树状数组 + 前缀和

    比较友好的数据结构题 建议读者好好思考思考--. 可以分析出与前缀和的关系, 之后就愉快的套起树状数组辣 #include <cstdio> #include<queue> # ...

  4. lsync 负载实现代码双向同步

    参考文件: https://www.zyku.net/centos/1713.html 检查错误命令: lsyncd -pidfile /tmp/lsyncd.pid  /etc/lsyncd.con ...

  5. Jmeter中使用CSV Data Set Config

    A

  6. Spring MVC 的概念1

    ---恢复内容开始--- SpringMVC是一个采用模型----视图------控制器(MVC)的WEb框架建立在中央前端控制器的 Servlet(DispatcherServlet),他负责发送每 ...

  7. Python面向对象----封装

    1. Python语言不是强类型语言, 公有和私有体现的不是很明显.私有成员可以通过 对象._ClassName__私有成员进行访问 2. 使用封装借助了装饰器 其实具有类get和set等操作

  8. 关系数据库标准语言SQL

    篇幅过长,恐惧者慎入!!!基础知识,大神请绕道!!! 本节要点: l  SQL概述 l  学生-课程关系 l  数据定义 基本表的定义.删除与修改 索引的建立与删除 l  查询 单表查询 连接查询 嵌 ...

  9. POJ 2133

    类似于DP一样做,但这题有个大坑,自己看DIS吧.... #include <iostream> #include <cstdio> #include <cstring& ...

  10. 菜鸟的mongoDB学习---(六)MongoDB 索引

    MongoDB 索引 ps:大概有半个月木有更新了,因为前一阶段的出差和这几天突然来的项目.导致上网时间急剧降低,实在是sorry,以后预计会好一点. 索引通常可以极大的提高查询的效率.假设没有索引. ...