题目大意:

给定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. linux 命令集

          cat chattr chgrp c hmod chown cksum cmp diff diffstat file find git gitview indent cut ln less ...

  2. golang 资源

    1.Learning Go <学习Go语言> http://www.miek.nl/projects/learninggo/中文版http://mikespook.com/learning ...

  3. unsigned char 无符号整形 减法运算

    对于一个字节来说: unsigned char :     0  ~  255              0000 0000  ~ 1111 1111 char :-128  ~  127       ...

  4. ManyToMany关联方式----

    http://blog.csdn.net/sinat_18882775/article/details/51171427 好的博客 系列文章总结

  5. robotframework笔记26

    测试数据文档工具(Testdoc) Testdoc是机器人框架内置的工具生成高水平 根据测试用例文档. 创建的文档是在HTML中 格式和它包括名称.文档和其他元数据 测试套件和测试用例,以及和他们的顶 ...

  6. [redis] Redis 常用命令

    redis命令文档:http://doc.redisfans.com/index.html 1. redis查看当前所有的key KEYS * 模糊匹配keykeys 模糊字符串*   2. 查看当前 ...

  7. sql server多表数据批量更新

    update wset w.TagCount=x.TagCountfrom (select ItemID,COUNT(*) as TagCount from r where IsValid=1 gro ...

  8. easyui的基本用法

    之前有用过extjs,最近发现easyui和fineui和extjs比较类似,并且稍微简单一点,所以考虑使用. 以下是项目中的具体简单应用 function callback2d(data) {//d ...

  9. HDUOJ----2485 Destroying the bus stations(2008北京现场赛A题)

    Destroying the bus stations                                                                          ...

  10. Java 之 I/O 系列 01 ——基础

    Java 之 I/O 系列 目录 Java 之 I/O 系列 01 ——基础 Java 之 I/O 系列 02 ——序列化(一) Java 之 I/O 系列 02 ——序列化(二) 整理<疯狂j ...