当前位置:网站首页>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
边栏推荐
- Systrace parsing
- Swin transformer to onnx
- Emergency medical communication solution | mesh wireless ad hoc network system
- PC端一次启动多个微信
- remote: Support for password authentication was removed on August 13, 2021.
- Int8 quantification and inference of onnx model using TRT
- 理解补码的要点
- 自定义classloader并实现热部署-使用loadClass
- Beifeng communication helps Zhanjiang fire brigade build PDT wireless communication system
- 记录一些npm 有关的问题(杂乱记录)
猜你喜欢

电力行业巡检对讲通信系统

可视化常见绘图(四)柱状图

Patrol inspection intercom communication system in power industry

可视化常见问题解决方案(九)背景颜色问题

Intuitive understanding of torch nn. Unfold

Beifeng communication helps Zhanjiang fire brigade build PDT wireless communication system

PyTorch 10. Learning rate

Metro wireless intercom system

Solution of self Networking Wireless Communication intercom system in Beifeng oil and gas field

可视化之路(十一)matplotlib颜色详解
随机推荐
自组网灵活补盲|北峰油气田勘测解决方案
golang实现一个带Web界面的五险一金计算器
各类日期转化的utils
Intelligent communication solution of Hainan Phoenix Airport
van-uploader上传图片实现过程、使用原生input实现上传图片
el-table的数据更新后,页面中数据未更新this.$forceUpdate()无效果
HuggingFace
Tensorflow安装后ImportError: DLL load failed: 找不到指定的模块,且国内安装缓慢
Swin transformer to onnx
城市应急管理|城市突发事故应急通信指挥调度系统
学习笔记6-几种深度学习卷积神经网络的总结
LATEX使用
Transformer的pytorch实现
presto日期函数的使用
理解补码的要点
Urban emergency management - urban emergency communication command and dispatching system
“泉”力以赴·同“州”共济|北峰人一直在行动
USO technology was invited to share the technical framework and challenges of AI synthetic virtual characters at lvson2020 conference
Statement of American photography technology suing Tianmu media for using volcanic engine infringement code
小程序换行符\n失效问题解决-日常踩坑