题目大意:

给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对

这里就抄一下别人的推断过程了

后面这个g(x) 算的方法就是在线性筛的时候只考虑当前的数最小因子,如果进来的最小因子不存在,相当于在之前那个数的基础上的每个mu值都多加了一个质数,那么

这些mu值就要取反,如果已经包含了这个最小因子,我这里另外进行了跟之前类似的讨论方法,在代码中写着

因为这题目数据比较大,这里求解的时候不应该线性求,因为总是有一段区间的n/i*(m/i)值相同,将g[]数组求一个前缀和,记录一段区间得到的值,可以缩小到

sqrt(n)的复杂度

 /*bzoj2820 YY的GCD*/
#include <bits/stdc++.h> using namespace std;
#define ll long long
#define N 10000000
int mu[N+] , prime[N+] , tot , f[N+] , sum[N+];
bool check[N+]; void get_mu()
{
mu[] = ;
for(int i= ; i<=N ; i++){
if(!check[i]){
prime[tot++] = i;
mu[i] = -;
f[i] = ;
}
for(int j= ; j<tot ; j++){
if((ll)prime[j]*i>N) break;
check[prime[j]*i] = true;
if(i%prime[j]){
mu[i*prime[j]] = -mu[i];
f[i*prime[j]] = -f[i]+mu[i];
}else{
/*
本身i中已经含有素数prime[j]
在if中表示含有至少3个因子prime[j],那么最后不管怎么样,当前数值除以一个因子都至少
含有两个prime[j],那么必然为0
else 只有2个prime[j]的情况,那么就是除了除以prime[j]其他情况得到的都是至少有两个因子
的,那么mu[]必然为0,而因为从当前增加了一个因子,那么就是讲那个取到的取反就可以了
*/
if((i/prime[j])%prime[j]==) f[i*prime[j]] = mu[i];
else f[i*prime[j]] = -mu[i/prime[j]];
break;
}
}
}
for(int i= ; i<=N ; i++) sum[i] = sum[i-]+f[i];
}
int n , m; ll solve()
{
int mn = min(n , m) , last ;
ll ret=;
for(int i= ; i<=mn ; i=last+){
last = min(n/(n/i) , m/(m/i));
ret += (ll)(sum[last]-sum[i-])*(n/i)*(m/i);
}
return ret;
} int main()
{
freopen("in.txt" , "r" , stdin);
get_mu();
int T;
scanf("%d" , &T);
while(T--){
scanf("%d%d" , &n , &m);
printf("%lld\n" , solve());
}
return ;
}

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 莫比乌斯反演_数学推导_线性筛

    Code: #include <cstdio> #include <algorithm> #include <cstring> #include <vecto ...

  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. SPOJ PGCD 4491. Primes in GCD Table && BZOJ 2820 YY的GCD (莫比乌斯反演)

    4491. Primes in GCD Table Problem code: PGCD Johnny has created a table which encodes the results of ...

随机推荐

  1. android textview段落开头空格问题

    textview中段落开头一般都会空2格排版显示,如果靠编辑空格来解决那就大错特错了,完美的解决方法就是用转义字符"\t",在段首加\t\t就解决啦!

  2. localhost访问不了

    安装phpstudy后,localhost访问不了,在忙了很久之后,我吧virtualbox卸载了,把百度云也卸载了,然后就可以了,可能是因为公司的网络限制比较多,但百度云也太肯了, 也是看别人装了, ...

  3. 【转】PackageInfo、ResolveInfo 笔记

    1.PackageInfo.ResolveInfo PackageItemInfo:包含了一些信息的基类, 它的直接子类有: ApplicationInfo. ComponentInfo.Instru ...

  4. Nemo Documents – 给文件添加标签 以日历的形式将文件呈现出来,很像 Outlook,你可以根据年、月、日来查看不同类型的文档

    Nemo Documents – 给文件添加标签   scavin(Google+) on 2012.03.28. Nemo Documents 是款文件组织管理工具(文档管理器),不是街道大妈胜似大 ...

  5. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  6. 《Java程序设计》第三周学习总结

    20145224-陈颢文 <Java程序设计>第三周学习总结 教材学习内容总结 一.定义类: ·类定义时使用class关键字,要对类中变量(值域成员/对象数据成员)行类型声明. class ...

  7. 《Java程序设计》第一周学习总结

    20145224 <Java程序设计>第一周学习总结 教材学习内容总结 通过第一周的学习让我对Java有了个初步的了解,知道了Java分为Java SE.Java EE.Java ME三大 ...

  8. VS2012外接程序VMDebugger未能加载或导致了异常

    转http://blog.csdn.net/maryhuan/article/details/42676915 故障现象:打开Visual Studio 2010后弹出错误框,外接程序VMDebugg ...

  9. 自定义头文件 No such file or directory

    my_file.h为你的头文件名 要用#include"my_file.h",而不能是#include<my_file.h>. 如果头文件名在尖括号<>里, ...

  10. think in java 读书笔记 2 —— 套接字

    目录 think in java 读书笔记 1 ——移位 think in java 读书笔记 2 —— 套接字 think in java 读书笔记 3 —— 数据报 概要 1. 套接字基本知识 2 ...