t<=10000组询问:有多少x,y,满足$x\epsilon [1,n],y\epsilon [1,m],(x,y)为质数$。n,m<=1e7。

首先式子列出来,f(i)--1<=x<=n,1<=y<=m中有多少(x,y)=i,g(i)--1<=x<=n,1<=y<=m中有多少i|(x,y),$g(i)=\sum_{i|d} f(d) ------> f(i)=\sum_{i|d} \mu(\frac{d}{i})g(d)$,而$g(i)=\frac{n}{i}\frac{m}{i}$,因此$f(i)=\sum_{i|d} \mu(\frac{d}{i})\frac{n}{d}\frac{m}{d}$,而(x,y)=k的充要条件是(x/k,y/k)=1,因此答案就$ans=\sum_{p是质数}^{min(n,m)}\sum_{d=1}^{min(n,m)}\mu(d)\frac{n}{pd}\frac{m}{pd}=\sum_{t=1}^{min(n,m)}\frac{n}{t}\frac{m}{t}\sum_{p|t}\mu(\frac{t}{p})$

前面那个sigma可以根号解决,而后面那个东西只跟t有关,因此预处理下即可。

 //#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
//#include<bitset>
#include<algorithm>
//#include<cmath>
using namespace std; int T,n,m;
#define maxn 10000011
int miu[maxn],prime[maxn],lp,summiu[maxn]; bool notprime[maxn];
void pre(int n)
{
lp=; miu[]=; summiu[]=;
for (int i=;i<=n;i++)
{
if (!notprime[i]) {prime[++lp]=i; miu[i]=-;}
for (int j=;j<=lp && 1ll*prime[j]*i<=n;j++)
{
notprime[i*prime[j]]=;
if (i%prime[j]) miu[i*prime[j]]=-miu[i];
else {miu[i*prime[j]]=; break;}
}
}
for (int i=;i<=lp;i++)
for (int j=prime[i],cnt=;j<=n;j+=prime[i],cnt++)
summiu[j]+=miu[cnt];
for (int i=;i<=n;i++) summiu[i]+=summiu[i-];
} #define LL long long
int main()
{
pre();
scanf("%d",&T);
while (T--)
{
scanf("%d%d",&n,&m);
LL ans=;
for (int i=,to=min(n,m),last;i<=to;i=last+)
{
last=min(n/(n/i),m/(m/i));
ans+=1ll*(n/i)*(m/i)*(summiu[last]-summiu[i-]);
}
printf("%lld\n",ans);
}
return ;
}

莫比乌斯反演套路一--令t=pd--BZOJ2820: YY的GCD的更多相关文章

  1. BZOJ2820 YY的GCD 【莫比乌斯反演】

    BZOJ2820 YY的GCD Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, ...

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

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

  3. [BZOJ2820]YY的GCD

    [BZOJ2820]YY的GCD 试题描述 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少 ...

  4. BZOJ2820: YY的GCD(反演)

    题解 题意 题目链接 Sol 反演套路题.. 不多说了,就是先枚举一个质数,再枚举一个约数然后反演一下. 最后可以化成这样子 \[\sum_{i = 1}^n \frac{n}{k} \frac{n} ...

  5. 莫比乌斯反演套路二--(n/d)(m/d)给提出来--BZOJ3529: [Sdoi2014]数表

    一个数表上第i行第j列表示能同时整除i和j的自然数,Q<=2e4个询问,每次问表上1<=x<=n,1<=y<=m区域内所有<=a的数之和.n,m<=1e5,a ...

  6. 莫比乌斯反演套路三、四--BZOJ2154: Crash的数字表格 && BZOJ2693: jzptab

    t<=1e4个询问每次问n,m<=1e7,$\sum_{1\leqslant x \leqslant n,1 \leqslant y\leqslant m}lcm(x,y)$. 首先题目要 ...

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

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

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

    Description 求有多少对(x,y)的gcd为素数,x<=n,y<=m.n,m<=1e7,T<=1e4. Solution 因为题目要求gcd为素数的,那么我们就只考虑 ...

  9. Bzoj-2820 YY的GCD Mobius反演,分块

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2820 题意:多次询问,求1<=x<=N, 1<=y<=M且gcd( ...

随机推荐

  1. E. The Values You Can Make 背包,同时DP

    http://codeforces.com/problemset/problem/688/E 题目需要在n个数中找出一个集合,使得这个集合的和为val,然后问这些所有集合,能产生多少个不同的和值. 题 ...

  2. Jquery插件jqprint-0.3.js实现打印

    1.首先引用Jquery和jqprint-0.3.js(依赖于Jquery的) <script language="javascript" src="jquery- ...

  3. Solr和Spring Data Solr

    一.Solr概述与安装 1.Solr简介 Solr是一个开源搜索平台,用于构建搜索应用程序. 它建立在Lucene(全文搜索引擎)之上. Solr是企业级的,快速的和高度可扩展的.Solr可以和Had ...

  4. 行内元素对齐各种问题--从line-height和vertical-align的角度分析

    最近研究行内元素的对齐问题,发现img不管怎么设置,下边都有一块留白,强迫症无法忍受未知,于是开始了查阅探索之旅. 辗转来到张鑫旭的博客,他对行内盒子模型做了详细的介绍,包括“幽灵节点”,“line- ...

  5. Android 计算view 的高度

    上午在做一个QuickAction里嵌套一个ListView,在Demo运行没事,结果引入到我的项目里,发现我先让它在Button上面,结果是无视那个Button的高度,这很明显,就是那个Button ...

  6. Leetcode_638.Shopping Offers

    https://leetcode.com/problems/shopping-offers/ In LeetCode Store, there are some kinds of items to s ...

  7. bzoj3994: [SDOI2015]约数个数和(反演+结论?!)

    这题做的历程堪称惊心动魄 刚刚学了莫比乌斯反演的我高高兴兴的和cbx一起反演式子 期间有突破,有停滞,有否定 然后苟蒻的我背着cbx偷偷打开了题解 看到了 我...... 去你的有个性质啊(当然还是自 ...

  8. caffe和图像一些基础知识

    1.卷积层的参数放置在convoluytion_param{}中,pad默认是0,stride默认是1,如果在convoluytion_param中没有写pad = 什么,或者stride = 什么, ...

  9. python note of decorator

    def decorate_log(decorate_arg,*args,**kwargs): # 存放装饰器参数 def decorate_wrapper(func,*args,**kwargs): ...

  10. 【牛客小白月赛6】 C 桃花 - 树上最长路

    题目地址:https://www.nowcoder.com/acm/contest/136/C dfs找出最长路和次长路,将两个结果相加再加上起点即可: #include<iostream> ...