题目大意:有 \(T\) 个询问,每个询问给定 \(N, M\),求 \(1\le x\le N, 1\le y\le M\) 且 \(gcd(x, y)\) 为质数的 \((x, y)\) 有多少对。

题解:直接像 GCD 那道题一样预处理欧拉函数的前缀和并用素数计算答案贡献会TLE。

考虑采用狄利克雷卷积进行优化。

\[\sum_{k=1}^{n} \sum_{d=1}^{\left\lfloor\frac{n}{K}\right\rfloor} \mu(d) *\left\lfloor\frac{n}{k d}\right\rfloor *\left\lfloor\frac{m}{k d}\right\rfloor \quad(k \in \text { prime })
\]

\[\sum_{k=1}^{n} \sum_{d=1}^{\left\lfloor\frac{n}{\pi}\right\rfloor} \mu(d) *\left\lfloor\frac{n}{T}\right\rfloor *\left\lfloor\frac{m}{T}\right\rfloor(k \in \text { prime })
\]

\[\sum_{T=1}^{n}\left\lfloor\frac{n}{T}\right\rfloor *\left\lfloor\frac{m}{T}\right\rfloor \sum_{k T, k \in p i m r e} \mu\left(\frac{T}{k}\right)
\]

可以 \(O(n)\) 预处理,\(O(\sqrt n)\) 回答每次询问,总时间复杂度为 \(O(n\sqrt n)\)。

代码如下

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int maxn=1e7+10; int n,m;
int mu[maxn],prime[maxn],tot,f[maxn],sum[maxn];
bool vis[maxn]; void seive(){
mu[1]=1;
for(int i=2;i<=1e7;i++){
if(!vis[i])prime[++tot]=i,mu[i]=-1;
for(int j=1;i*prime[j]<=1e7;j++){
vis[i*prime[j]]=1;
if(i%prime[j]==0)break;
mu[i*prime[j]]=-mu[i];
}
}
for(int i=1;i<=tot;i++)
for(int j=1;j*prime[i]<=1e7;j++)
f[prime[i]*j]+=mu[j];
for(int i=1;i<=1e7;i++)sum[i]=sum[i-1]+f[i];
} void solve(){
ll ans=0;
for(int i=1;i<=n;i++){
int j=min(n/(n/i),m/(m/i));
ans+=(ll)(sum[j]-sum[i-1])*(ll)(n/i)*(ll)(m/i);
i=j;
}
printf("%lld\n",ans);
} int main(){
seive();
int T;scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
if(n>m)swap(n,m);
solve();
}
return 0;
}

【洛谷P2257】YY的GCD的更多相关文章

  1. 洛谷 P2257 YY的GCD

    洛谷 P2257 YY的GCD \(solution:\) 这道题完全跟[POI2007]ZAP-Queries (莫比乌斯反演+整除分块) 用的一个套路. 我们可以列出答案就是要我们求: \(ans ...

  2. 洛谷 - P2257 - YY的GCD - 莫比乌斯反演 - 整除分块

    https://www.luogu.org/problemnew/show/P2257 求 \(n,m\) 中 \(gcd(i,j)==p\) 的数对的个数 求 $\sum\limits_p \sum ...

  3. 洛谷 P2257 YY的GCD 题解

    原题链接 庆祝: 数论紫题 \(T4\) 达成! 莫比乌斯 \(T1\) 达成! yy 真是个 神犇 前记 之前我觉得: 推式子,直接欧拉筛,筛出个 \(\phi\),然后乱推 \(\gcd\) 就行 ...

  4. 洛谷 P2257 - YY的GCD(莫比乌斯反演+整除分块)

    题面传送门 题意: 求满足 \(1 \leq x \leq n\),\(1 \leq y \leq m\),\(\gcd(x,y)\) 为质数的数对 \((x,y)\) 的个数. \(T\) 组询问. ...

  5. 洛谷P2257 YY的GCD 莫比乌斯反演

    原题链接 差不多算自己推出来的第一道题QwQ 题目大意 \(T\)组询问,每次问你\(1\leqslant x\leqslant N\),\(1\leqslant y\leqslant M\)中有多少 ...

  6. 洛谷P2257 YY的GCD

    今日份是数论 大概是..从小学奥数到渐渐毒瘤 那就简单列一下目录[大雾 同余 质数密度 唯一分解定理 互质 完全剩余系 简化剩余系 欧拉函数 逆元 斐蜀定理 阶(及其性质) 欧拉定理 费马小定理 原根 ...

  7. 洛谷P2257 YY的GCD(莫比乌斯反演)

    传送门 原来……莫比乌斯反演是这么用的啊……(虽然仍然不是很明白) 首先,题目所求如下$$\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=prim]$$ 我们设$f(d)$表示$g ...

  8. 解题:洛谷2257 YY的GCD

    题面 初见莫比乌斯反演 有一个套路是关于GCD的反演经常设$f(d)=\sum_{gcd(i,j)==d},g(d)=\sum_{d|gcd(i,j)}$,然后推推推 $\sum\limits_{i= ...

  9. [洛谷2257]YY的GCD 题解

    整理题目转化为数学语言 题目要我们求: \[\sum_{i=1}^n\sum_{i=1}^m[gcd(i,j)=p]\] 其中 \[p\in\text{质数集合}\] 这样表示显然不是很好,所以我们需 ...

  10. 洛谷 2257 - YY的GCD

    莫比乌斯反演半模板题 很容易可以得到 \[Ans = \sum\limits_{p \in prime} \sum\limits_{d = 1}^{\min (\left\lfloor\frac{a} ...

随机推荐

  1. Jquery模拟多选框(checkbox)

    代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...

  2. java学习之—栈

    /** * 栈 * Create by Administrator * 2018/6/11 0011 * 上午 10:20 **/ public class StackX { private int ...

  3. Java HashMap的put操作(Java1.8)

    https://www.cnblogs.com/JzedyBlogs/p/10208295.html 写得非常好: 这个是Java1.8 ------------------------------- ...

  4. pip 升级

    pip install --upgrade qrcode pip install --upgrade qrcode==5.3

  5. APP测试重点(转载)

      1.安装卸载测试: app在不同的操作系统(安卓和ios),不同的版本,不同的机型上是否都能安装成功: 在安装过程中,突然断网或网络不好,是否给出有好的提示,网络恢复之后是否能正常下载: 在安装过 ...

  6. List接口方法

    package cn.zhou.com; /* * List?-------是啥? Collection 的一个子接口! * * 集合?容器? * * 区分容器,每个容器的数据结构不一样! * 集合, ...

  7. bzoj4152-[AMPPZ2014]The_Captain

    Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. Input 第一行包含一个正整数n(2 ...

  8. FTC诉高通垄断案苹果从中受益

    据外媒报道,美国当地时间周二,美国联邦贸易委员会(FTC)诉芯片制造商高通公司(Qualcomm)垄断案进入了终结辩论阶段.这意味着,这起审判也进入最后阶段,它可能颠覆高通在智能手机时代取得成功的至关 ...

  9. [NOIP]2017列队——旋转treap/非旋转treap

    Sylvia 是一个热爱学习的女孩子.  前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia所在的方阵中有n × m名学生,方阵的行数为 n,列数为m.  为了便 ...

  10. Luogu5289 十二省联考2019字符串问题(后缀数组+拓扑排序+线段树/主席树/KDTree)

    先考虑80分做法,即满足A串长度均不小于B串,容易发现每个B串对应的所有A串在后缀数组上都是一段连续区间,线段树优化连边然后判环求最长链即可.场上就写了这个. 100分也没有什么本质区别,没有A串长度 ...