当前位置:网站首页>P2257 YY的GCD(莫比乌斯反演)
P2257 YY的GCD(莫比乌斯反演)
2022-04-23 06:21:00 【Zimba_】
题意:
给定 N , M N, M N,M,求 1 ≤ x ≤ N , 1 ≤ y ≤ M 1 \leq x \leq N,1 \leq y \leq M 1≤x≤N,1≤y≤M 且 gcd ( x , y ) \gcd(x, y) gcd(x,y)为质数的 ( x , y ) (x, y) (x,y) 有多少对。
T T T组样例, T = 1 0 4 , N , M ≤ 1 0 7 T = 10^{4} ,N,M\leq10^{7} T=104,N,M≤107
推导:
根据题意写出式子,
∑ i = 1 N ∑ j = 1 M [ g c d ( i , j ) 为 质 数 ] \sum_{i=1}^{N}\sum_{j=1}^{M}[gcd(i,j)为质数] ∑i=1N∑j=1M[gcd(i,j)为质数]
提出 g c d gcd gcd, 变成
∑ g = 1 m i n ( N , M ) ∑ i = 1 N ∑ j = 1 M [ g c d ( i , j ) = g ] [ g 为 质 数 ] \sum_{g=1}^{min(N,M)}\sum_{i=1}^{N}\sum_{j=1}^{M}[gcd(i,j)=g][g为质数] ∑g=1min(N,M)∑i=1N∑j=1M[gcd(i,j)=g][g为质数]
不妨让 N < M N<M N<M
就变成 ∑ g = 1 N [ g 为 质 数 ] ∑ i = 1 N ∑ j = 1 M [ g c d ( i , j ) = g ] \sum_{g=1}^{N}[g为质数]\sum_{i=1}^{N}\sum_{j=1}^{M}[gcd(i,j)=g] ∑g=1N[g为质数]∑i=1N∑j=1M[gcd(i,j)=g]了,写起来舒服点。
令 f ( g ) = ∑ i = 1 N ∑ j = 1 M [ g c d ( i , j ) = g ] f(g)=\sum_{i=1}^{N}\sum_{j=1}^{M}[gcd(i,j)=g] f(g)=∑i=1N∑j=1M[gcd(i,j)=g]
令 F ( g ) = ∑ g ∣ d f ( d ) = ∑ i = 1 N ∑ j = 1 M [ g ∣ g c d ( i , j ) ] = ⌊ N g ⌋ ⌊ M g ⌋ F(g)=\sum_{g|d}f(d)=\sum_{i=1}^{N}\sum_{j=1}^{M}[g|gcd(i,j)]=\lfloor \frac{N}{g}\rfloor \lfloor\frac{M}{g} \rfloor F(g)=∑g∣df(d)=∑i=1N∑j=1M[g∣gcd(i,j)]=⌊gN⌋⌊gM⌋
根据莫比乌斯反演公式有 f ( g ) = ∑ g ∣ d μ ( d g ) F ( d ) f(g)=\sum_{g|d}\mu(\frac{d}{g})F(d) f(g)=∑g∣dμ(gd)F(d)
代回原式子得,
∑ g = 1 N [ g 为 质 数 ] f ( g ) = ∑ g = 1 N [ g 为 质 数 ] ∑ g ∣ d μ ( d g ) ⌊ N d ⌋ ⌊ M d ⌋ \sum_{g=1}^{N}[g为质数]f(g)=\sum_{g=1}^{N}[g为质数]\sum_{g|d}\mu(\frac{d}{g})\lfloor \frac{N}{d}\rfloor \lfloor\frac{M}{d} \rfloor ∑g=1N[g为质数]f(g)=∑g=1N[g为质数]∑g∣dμ(gd)⌊dN⌋⌊dM⌋
= ∑ d = 1 N ⌊ N d ⌋ ⌊ M d ⌋ ∑ g ∣ d μ ( d g ) [ g 为 质 数 ] =\sum_{d=1}^{N}\lfloor \frac{N}{d}\rfloor \lfloor\frac{M}{d} \rfloor\sum_{g|d}\mu(\frac{d}{g})[g为质数] =∑d=1N⌊dN⌋⌊dM⌋∑g∣dμ(gd)[g为质数]
= ∑ d = 1 N ⌊ N d ⌋ ⌊ M d ⌋ S ( d ) =\sum_{d=1}^{N}\lfloor \frac{N}{d}\rfloor \lfloor\frac{M}{d} \rfloor S(d) =∑d=1N⌊dN⌋⌊dM⌋S(d)
其中我们令 S ( d ) = ∑ g ∣ d μ ( d g ) [ g 为 质 数 ] S(d)=\sum_{g|d}\mu(\frac{d}{g})[g为质数] S(d)=∑g∣dμ(gd)[g为质数],我们只要预处理出 S ( d ) S(d) S(d), 再处理出 S ( d ) S(d) S(d)的前缀和,就可以用数论分块求答案了。
那么预处理 S ( d ) S(d) S(d),我们可以对于每个数分解质因子计算贡献,也可以对于每个质数,把贡献加到它的所有倍数中,两种做法都可以 o ( n l o g n ) o(nlogn) o(nlogn)。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = 1e9+7;
typedef pair<int,int> P;
const int MAXN=10000000;
int prime[MAXN+10],notPrime[MAXN+10],mu[MAXN+10],tot;
void initMu(int n)
{
notPrime[1]=mu[1]=1;
for(int i=2;i<=n;i++)
{
if(!notPrime[i])prime[tot++]=i,mu[i]=-1;
for(int j=0;j<tot&&i*prime[j]<=n;j++)
{
notPrime[i*prime[j]]=1;
if(i%prime[j])mu[i*prime[j]]=-mu[i];
else {
mu[i*prime[j]]=0;break;}
}
}
}
int f[MAXN+10];
int main()
{
initMu(MAXN);
for(int i=1;i<=MAXN;i++)if(!notPrime[i])
{
for(int j=i;j<=MAXN;j+=i)
{
f[j]+=mu[j/i];
}
}
for(int i=1;i<=MAXN;i++)f[i]+=f[i-1];
int T;
scanf("%d",&T);
while(T--)
{
int n,m;
scanf("%d%d",&n,&m);
if(n>m)swap(n,m);
ll ans=0;
for(int l=1,r;l<=n;l=r+1)
{
r=min(n/(n/l),m/(m/l));
ans=ans+1ll*(n/l)*(m/l)*(f[r]-f[l-1]);
}
printf("%lld\n",ans);
}
return 0;
}
版权声明
本文为[Zimba_]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_43785386/article/details/107816990
边栏推荐
猜你喜欢
van-uploader上传图片实现过程、使用原生input实现上传图片
可视化常见问题解决方案(七)画图刻度设置解决方案
Meishe technology launches professional video editing solution for desktop -- Meiying PC version
How to improve the service efficiency of the hotel without blind spots and long endurance | public and Private Integrated walkie talkie?
枫桥学院开元名庭酒店DMR系统解决方案
manjaro安装与配置(vscode,微信,美化,输入法)
Typora语法详解(一)
自组网灵活补盲|北峰油气田勘测解决方案
DMR system solution of Kaiyuan MINGTING hotel of Fengqiao University
可视化常见问题解决方案(八)数学公式
随机推荐
按需引入vant组件
使用compressorjs压缩图片,优化功能,压缩所有格式的图片
字节跳动2020秋招编程题:根据工号快速找到自己的排名
记录一下使用v-print中遇到的问题
Discussion on frame construction and technology selection of short video platform
社区版阿里MQ普通消息发送订阅Demo
关于短视频技术轮廓探讨
Tensorflow安装后ImportError: DLL load failed: 找不到指定的模块,且国内安装缓慢
By onnx checker. check_ Common errors detected by model
各类日期转化的utils
记录一个查询兼容性的网站,String.replaceAll()兼容性报错
el-table 横向滚动条固定在可视窗口底部
H5案例开发
PyTorch 9. optimizer
直观理解熵
Machine vision series (02) -- tensorflow2 3 + win10 + GPU installation
理解补码的要点
# 可视化常见绘图(二)折线图
el-date-picker中自定义快捷选项picker-options,动态设置禁用日期
PyTorch 13. Nested functions and closures (dog head)