原题传送门

这题需要运用莫比乌斯反演(懵逼钨丝繁衍)

显然题目的答案就是$$ Ans=\sum_{i=1}N\sum_{j=1}M[gcd(i,j)=prime]$$

我们先设设F(n)表示满足\(gcd(i,j)\%t=0\)的数对个数,f(t)表示满足\(gcd(i,j)=t\)的数对个数

$$f(t)=\sum_{i=1}N\sum_{j=1}M[gcd(i,j)=t]$$

$$F(n)=\sum_{n|t}\lfloor \frac{N}{n} \rfloor \lfloor \frac{M}{n} \rfloor$$

那么根据莫比乌斯反演的第二种形式珂以得到

$$f(n)=\sum_{n|t}\mu(\lfloor \frac{t}{n} \rfloor)F(t)$$

所以答案珂以变形为:

$$Ans=\sum_{p \in prime}\sum_{i=1}N\sum_{j-1}M[gcd(i,j)=p)$$

$$=\sum_{p \in prime}f(p) \qquad \qquad \quad$$

$$=\sum_{p \in prime}\sum_{p|t}\mu(\lfloor \frac{t}{p} \rfloor)F(t)$$

我们不枚举p,我们枚举\(\lfloor \frac{t}{p} \rfloor\)

$$Ans=\sum_{p \in prime}\sum_{d=1}^{Min(\frac{N}{p},\frac{M}{p})}\mu(t)F(tp)$$

$$\qquad \qquad \qquad=\sum_{p \in prime}\sum_{d=1}^{Min(\frac{N}{p},\frac{M}{p})}\mu(t)\sum_{n|t}\lfloor \frac{N}{tp} \rfloor \lfloor \frac{M}{tp} \rfloor$$

我们把tp换成T继续变形

$$Ans=\sum_{T=1}^{Min(N,M)}\lfloor \frac{N}{T} \rfloor \lfloor \frac{M}{T} \rfloor(\sum_{p|T,p \in prime}\mu(\frac{T}{p}))$$

这样就珂以用整除分块求了qaq

#include <bits/stdc++.h>
#define N 10000005
#define ll long long
#define getchar nc
using namespace std;
inline char nc(){
static char buf[100000],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
inline int read()
{
register int x=0,f=1;register char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return x*f;
}
inline void write(register ll x)
{
if(!x)putchar('0');if(x<0)x=-x,putchar('-');
static int sta[30];register int tot=0;
while(x)sta[tot++]=x%10,x/=10;
while(tot)putchar(sta[--tot]+48);
}
inline int Min(register int x,register int y)
{
return x<y?x:y;
}
int v[N],miu[N],prim[N],cnt=0,g[N];
ll sum[N];
int main()
{
miu[1]=1;
for(register int i=2;i<=N;++i)
{
if(!v[i])
{
miu[i]=-1;
prim[++cnt]=i;
}
for(register int j=1;j<=cnt&&prim[j]*i<=N;++j)
{
v[i*prim[j]]=1;
if(i%prim[j]==0)
break;
else
miu[prim[j]*i]=-miu[i];
}
}
for(register int i=1;i<=cnt;++i)
for(register int j=1;j*prim[i]<=N;++j)
g[j*prim[i]]+=miu[j];
for(register int i=1;i<=N;++i)
sum[i]=sum[i-1]+(ll)g[i];
int t=read();
while(t--)
{
int n=read(),m=read();
if(n>m)
n^=m^=n^=m;
ll ans=0;
for(register int l=1,r;l<=n;l=r+1)
{
r=Min(n/(n/l),m/(m/l));
ans+=(ll)(n/l)*(m/l)*(sum[r]-sum[l-1]);
}
write(ans),puts("");
}
return 0;
}

【题解】Luogu P2257 YY的GCD的更多相关文章

  1. [Luogu P2257] YY的GCD (莫比乌斯函数)

    题面 传送门:洛咕 Solution 推到自闭,我好菜啊 显然,这题让我们求: \(\large \sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)\in prime]\) 根 ...

  2. Luogu P2257 YY的GCD

    莫比乌斯反演第一题.莫比乌斯反演入门 数论题不多BB,直接推导吧. 首先,发现题目所求\(ans=\sum_{i=1}^n\sum_{j=1}^m [\gcd(i,j)=prime]\) 考虑反演,我 ...

  3. Luogu P2257 YY的GCD 莫比乌斯反演

    第一道莫比乌斯反演...$qwq$ 设$f(d)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d]$ $F(n)=\sum_{n|d}f(d)=\lfloor \frac{N ...

  4. 题解 P2257 YY的GCD

    P2257 YY的GCD 解题思路 果然数论的题是真心不好搞. 第一个莫比乌斯反演的题,好好推一下式子吧..(借鉴了blog) 我们要求的答案就是\(Ans=\sum\limits_{i=1}^{n} ...

  5. 洛谷 P2257 YY的GCD

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

  6. P2257 YY的GCD

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

  7. 洛谷 P2257 YY的GCD 题解

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

  8. P2257 YY的GCD (莫比乌斯反演)

    [题目链接] https://www.luogu.org/problemnew/show/P2257 // luogu-judger-enable-o2 /* -------------------- ...

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

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

随机推荐

  1. express框架之session 存储

    1.express-session 是基于express框专门用于处理session的中间件.这里不谈express-session怎么安装,只给出相应的实例代码.另外,session的认证机制离不开 ...

  2. 笔记本(ThinkPad)怎样关闭触摸板

    随着笔记本电脑的普及,人们越来越习惯于出门使用笔记本,笔记本的便捷高效也大幅度地提升了人们的工作效率.但是如果居家使用笔记本电脑,也有其不便之处.比如在键盘上打字,很容易就会喷到触摸板,以至于光标一下 ...

  3. numpy中np.c_和np.r_

    np.r_:按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,类似于pandas中的concat() np.c_:按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的mer ...

  4. IdentityServer3:.NET开源OpenID和OAuth2架构

    简介 大多数软件的相互沟通图:客户端与Web应用程序的访问.应用与Web api.api与api……相互沟通则需要授权.身份验证 IdentityServer3的功能:Web认证.SSO单点登录.We ...

  5. ASP.Net Core 2.2 MVC入门到基本使用系列 (三)(转)

    本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...

  6. sqlmap常用技巧整理

    言 通过在乌云网上出现的很多SQL注入漏洞,因此来总结一下,大致使用SQLMAP所遇到的参数. 基本结构 基本SQLMAP的使用方式就如下所示,使用参数式的方式,按需求添加. 12 sqlmap.py ...

  7. PLSQL oracle32位 oracle64 安装区别及注意问题

    一.先明确几个概念: 1.PLSQL 只有32位的. 2.oracle 客户端 分别有32.64位,一般使用32位. 3.oracle 服务端 分别有32.64位,一般老的服务器使用32位,新的服务器 ...

  8. C#回调浅析(委托、接口回调)

    https://wenku.baidu.com/view/ed724173bd64783e08122b2f.html

  9. 定时调度任务quartz

    依赖 <!-- quartz --> <dependency> <groupId>org.quartz-scheduler</groupId> < ...

  10. 【2017-03-10】T-sql基础语句及条件,高级查询

    一.T-sql基础语句 1.创建数据库:create database 数据库名  (不能中文,不能数字开头,不能符号开头) 2.删除数据库:drop database 数据库名 3.选择数据库:us ...