求 $\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. 前端开发—CSS 盒子、浮动、定位

    盒子模型 margin padding border content margin:            用于控制元素与元素之间的距离:body自带 8 像素的margin 需要手动去除.(快递盒之 ...

  2. linux笔记常用命令

    LINUX成长日记 1.本人工作实例:(将一台服务器的数据库复制到另外一台服务器上) scp -r -P 8351 /bak_mysql/sz_b2b2c201705180200.sql root@1 ...

  3. Python数据分析5-----数据规约

    1.数据规约概念和目的 数据规约是产生更小且保留数据完整性的新数据集. 意义:降低无效错误数据的影响.更有效率.降低存储成本. 2.属性规约 (1)属性合并(降维):比如PCA (2)删除不相关属性 ...

  4. 训练1-C

    妈妈每天都要出去买菜,但是回来后,兜里的钱也懒得数一数,到底花了多少钱真是一笔糊涂帐.现在好了,作为好儿子(女儿)的你可以给她用程序算一下了,呵呵. Input 输入含有一些数据组,每组数据包括菜种( ...

  5. HTML常用标签简介及快速入门

    此HTML常用标签简介编写的目的,是给一个经常使用网页编辑器的一个朋友提供一个快速熟悉和入门HTML的途径. 现在分享出来,给其他有类似需求的朋友,此处只列出了编辑文章时最常用和遇到的标签,完整标签页 ...

  6. 工具-VS2015前端开发工具简介

    每个涉及的工具库都给出了入门介绍.基本概念,以及在VS和ASP.NET中的用法.这个白皮书完全就是一个非常难得的前端开发入门手册. 具体涉及到的工具库有: 流行的JS任务执行器:Grunt和Gulp. ...

  7. CF802G Fake News (easy)

    CF802G Fake News (easy) 题意翻译 给定一个字符串询问能否听过删除一些字母使其变为“heidi” 如果可以输出“YES”,不然为“NO” 题目描述 As it's the fir ...

  8. osEye.Net:离别是为了将来的重逢

    这一时刻已经成为osEye历史..... 在热心网友的关怀和鼓励之下,osEye.net将继续运行着,感谢你们陪伴osEye一起走过.... 与你相知相恋已经有4个年头了,你的成长到成熟都让我历历在目 ...

  9. cpu真实占用率检測工具

     windows任务管理器所示CPU占用,一直在不断的变动跳跃 ,并不能反应真实的平均CPU占用率.迅雷下载工具也是一样 ,有时这些知名软件,反倒是没有做的这么人性化,细致.或 许就是不想让人知道 ...

  10. java中文件路径读取

    windows下 1)相对路径 public static final String TestDataExcelFilePath="src/omstestdata.xlsx"; 2 ...