这题美好体验就是卡常

Description

link

\[\sum^{n}_ {i=1} \sum^m_{j=1} [gcd(i,j)\in prime]
\]

其中:\(1\leq n,m \leq 10^7\),多组询问

Solution

对于这种与\(gcd\)相关的反演题,有一个好的套路

设\(f(d)=[gcd(i,j)=d]\),\(F(n)\)为\(gcd(i,j)=d\)和\(d\)的倍数的个数,即:

\[f(d)=[gcd(i,j)=d]
\]

\[F(n)=\sum_{d|n} f(d)= \lfloor \frac{N}{n} \rfloor \lfloor \frac{M}{m} \rfloor
\]

\[f(n)=\sum_{n|d} \mu(\lfloor \frac{d}{n} \rfloor)F(d)
\]

由着这个套路,我们开始化简这个式子

\[\sum_{p \in prime} \sum_{i=1}^n \sum_{j=1}^m [gcd(i,j)==p]
\]

将\(f(p)\)带入:

\[\sum_{p \in prime}f(p)
\]

把\(f(x)\)换成\(F(x)\)

\[\sum_{p \in prime}\sum_{p|d} \mu(\lfloor \frac{d}{p} \rfloor)F(d)
\]

我们枚举\(\lfloor \frac{d}{p} \rfloor\)

\[\sum_{p \in prime} \sum_{d=1}^{min(\lfloor \frac{n}{p} \rfloor,\lfloor \frac{m}{p} \rfloor} \mu(d)F(dp)
\]

再把\(F(dp)\)换成最终式:

\[\sum_{p \in prime} \sum_{d=1}^{min(\lfloor \frac{n}{p} \rfloor,\lfloor \frac{m}{p} \rfloor)} \mu(d)\lfloor \frac{N}{n} \rfloor \lfloor \frac{M}{m} \rfloor
\]

令\(T=dp\),则有:

\[\sum^{min(n,m)}_ {T=1} \sum_{t|T,t\in prime} \mu(\lfloor \frac{T}{t} \rfloor)\lfloor \frac{n}{T} \rfloor\lfloor \frac{m}{T} \rfloor
\]

\[\sum^{min(n,m)}_ {T=1} \lfloor \frac{n}{T} \rfloor\lfloor \frac{m}{T} \rfloor(\sum_{t|T} \mu(\lfloor \frac{T}{t} \rfloor))
\]

推到这里,我们就都可以做了

\(\mu(\space)\)可以线性筛,其他的可以整除分块

CODE

#include<bits/stdc++.h>
#define reg register
using namespace std;
namespace yspm{
inline int read()
{
int res=0,f=1; char k;
while(!isdigit(k=getchar())) if(k=='-') f=-1;
while(isdigit(k)) res=res*10+k-'0',k=getchar();
return res*f;
}
const int N=10000010;
bool vis[N]; int pri[N],mu[N],g[N],cnt;
#define ll long long
ll sum[N];
inline void prework()
{
mu[1]=1;
for(reg int i=2;i<N;++i)
{
if(!vis[i]){mu[i]=-1;pri[++cnt]=i;}
for(reg int j=1;j<=cnt&&pri[j]*i<N;++j)
{
vis[i*pri[j]]=1;
if(i%pri[j]==0) break;
else mu[pri[j]*i]-=mu[i];
}
}
for(reg int j=1;j<=cnt;++j)
{
for(reg int i=1;i*pri[j]<N;++i) g[i*pri[j]]+=mu[i];
}
for(reg int i=1;i<N;++i) sum[i]=sum[i-1]+(ll)g[i];
return ;
}
inline void work()
{
int n=read(),m=read(); if(n>m) swap(n,m);
ll ans=0;
for(reg int l=1,r;l<=n;l=r+1)
{
r=min(n/(n/l),m/(m/l));
ans+=1ll*(n/l)*(m/l)*(sum[r]-sum[l-1]);
}printf("%lld\n",ans);
return ;
}
signed main()
{
prework(); int T=read(); while(T--) work();
return 0;
}
}
signed main(){return yspm::main();}

不禁感叹一句,能让 \(yspm\) 这种信奉 \(define \space int \space long \space long\) 的人都不全用 $ long \space long $ 的得是什么卡常\(sb\)题呀!!!

LGOJ2257 YY的GCD的更多相关文章

  1. BZOJ 2820: YY的GCD [莫比乌斯反演]【学习笔记】

    2820: YY的GCD Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1624  Solved: 853[Submit][Status][Discu ...

  2. [BZOJ2820]YY的GCD

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

  3. bzoj 2820 YY的GCD 莫比乌斯反演

    题目大意: 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 这里就抄一下别人的推断过程了 后面这个g(x) 算的方法就是在线性 ...

  4. 【BZOJ】【2820】YY的GCD

    莫比乌斯反演 PoPoQQQ讲义第二题. 暴力枚举每个质数,然后去更新它的倍数即可,那个g[x]看不懂就算了…… 为什么去掉了一个memset就不T了→_→…… /****************** ...

  5. 【莫比乌斯反演】关于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( ...

  6. 【BZOJ 2820】 YY的GCD (莫比乌斯+分块)

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

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

    [BZOJ2820]YY的GCD(莫比乌斯反演) 题面 讨厌权限题!!!提供洛谷题面 题解 单次询问\(O(n)\)是做过的一模一样的题目 但是现在很显然不行了, 于是继续推 \[ans=\sum_{ ...

  8. YY的GCD

    YY的GCD 给出T个询问,询问\(\sum_{i=1}^N\sum_{j=1}^M(gcd(i,j)\in prime)\),T = 10000,N, M <= 10000000. 解 显然质 ...

  9. 洛谷【P2257】YY的GCD

    YY的GCD 原题链接 这应该是我做的第一道莫比乌斯反演的题目. 题目描述 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x ...

随机推荐

  1. 十分简明易懂的FFT(快速傅里叶变换)

    https://blog.csdn.net/enjoy_pascal/article/details/81478582 FFT前言快速傅里叶变换 (fast Fourier transform),即利 ...

  2. XML--XML概览

    参考 https://www.cnblogs.com/fangjian0423/p/xml-namespace.html http://www.w3school.com.cn/x.asp xmlns ...

  3. AD软件将PCB中的元器件旋转45度

  4. Cracking Digital VLSI Verification Interview 第一章

    目录 Digital Logic Design Number Systems, Arithmetic and Codes Basic Gates Combinational Logic Circuit ...

  5. spring aop中的propagation的7种配置

    1.前言 在声明式的事务处理中,要配置一个切面,即一组方法,如 <tx:advice id="txAdvice" transaction-manager="txMa ...

  6. vue 动画框架Animate.css @keyframes

    <script src="vue.js"></script> <link rel="stylesheet" href=" ...

  7. Thread--线程工作万花筒

    线程工作内存图. 线程状态.

  8. CentOS7下MySQL8的二进制基本安装配置

    前言 基于本地Centos7.6虚拟机Mysql8的配置(亲测有效) 一.安装前的准备 1.到官网下载mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz 2.通过Xs ...

  9. sqlserver2008的sql语句支持的最大长度

    想写一个sql语句,很长,主要是in后跟着无数个用户ID,(虽然实现方式很低级,但是还是凑合着用吧) 不知道sql最大长度是多少,看了 SQL Server 的最大容量规范,写的是 包含 SQL 语句 ...

  10. 使用图数据库 Nebula Graph 数据导入快速体验知识图谱

    本文由 Nebula Graph 实习生@王杰贡献. 最近 @Yener 开源了史上最大规模的中文知识图谱——OwnThink(链接:https://github.com/ownthink/Knowl ...