bzoj2820 YY的GCD【莫比乌斯反演】
来源:互联网 发布:清华在线网络教育平台 编辑:程序博客网 时间:2024/06/07 11:02
解题思路:
题目大意即为求:
∑p∈P∑i=1n∑j=1m[gcd(i,j)=p]
原式=∑p∈P∑i=1np∑j=1mp[gcd(i,j)=1]
=∑p∈P∑i=1np∑j=1mpϵ(gcd(i,j))
=∑p∈P∑i=1np∑j=1mp∑d|gcd(i,j)μ(d)
=∑p∈P∑i=1np∑j=1mp∑d|i,d|jμ(d)
=∑p∈P∑d∑i=1npd∑j=1mpdμ(d)
=∑p∈P∑dμ(d)⌊npd⌋⌊mpd⌋
这里我们设
原式=∑T⌊nT⌋⌊mT⌋∑p∈P,p|Tμ(Tp) 。
令
g(x)=∑p∈P,p|xμ(xp)
那么关键在于求
考虑线性筛法。
对于一个质数
当
g(p0x)=∑p∈P,p|p0xμ(p0xp)=μ(x)
当
g(p0x)=∑p∈P,p|xμ(xp)∗μ(p0)+μ(p0xp0)
即g(p0x)=−g(x)+μ(x) 。
所以可以线性筛出
#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<cmath>#include<ctime>#include<vector>#include<set>#include<complex>#define ll long longusing namespace std;int getint(){ int i=0,f=1;char c; for(c=getchar();(c<'0'||c>'9')&&c!='-';c=getchar()); if(c=='-')f=-1,c=getchar(); for(;c>='0'&&c<='9';c=getchar())i=(i<<3)+(i<<1)+c-'0'; return i*f;}const int N=1e7+5,INF=0x3f3f3f3f;int T,n,m,pn;int pri[N],mu[N],g[N],sum[N];void sieve(){ memset(mu,INF,sizeof(mu)); mu[1]=1; for(int i=2;i<=1e7;i++) { if(mu[i]==INF)pri[++pn]=i,mu[i]=-1,g[i]=1; for(int j=1;j<=pn;j++) { ll k=1ll*i*pri[j]; if(k>1e7)break; if(i%pri[j]==0) { mu[k]=0; g[k]=mu[i]; break; } else { mu[k]=-mu[i]; g[k]=mu[i]-g[i]; } } sum[i]=sum[i-1]+g[i]; }}int main(){ //freopen("lx.in","r",stdin); //freopen("lx.out","w",stdout); sieve(); T=getint(); while(T--) { n=getint(),m=getint(); if(n>m)swap(n,m); ll ans=0; for(int i=1,j;i<=n;i=j+1) { j=min(n/(n/i),m/(m/i)); ans+=1ll*(n/i)*(m/i)*(sum[j]-sum[i-1]); } printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- bzoj2820: YY的GCD 莫比乌斯反演
- 【莫比乌斯反演】[BZOJ2820]YY的GCD
- 【bzoj2820】YY的GCD 莫比乌斯反演
- 【bzoj2820】【YY的gcd】【莫比乌斯反演】
- Bzoj2820:YY的GCD:莫比乌斯反演
- [BZOJ2820]YY的GCD(莫比乌斯反演)
- [bzoj2820]YY的GCD 莫比乌斯反演
- 【莫比乌斯反演】BZOJ2820 YY的GCD
- bzoj2820 YY的GCD【莫比乌斯反演】
- BZOJ2820 YY的GCD 莫比乌斯反演
- BZOJ2820 YY的GCD 【莫比乌斯反演】
- bzoj2820 [bzoj2820]YY的GCD(线性素数筛+莫比乌斯反演)
- 【bzoj2820】YY的GCD 线性筛法+莫比乌斯反演+数论分块
- 莫比乌斯反演练习bzoj2440;bzoj2301;bzoj2820 YY的GCD
- [莫比乌斯反演+分块求和] BZOJ2820: YY的GCD
- [BZOJ2820]YY的GCD(莫比乌斯反演+线性筛)
- BZOJ 2820 YY的GCD 莫比乌斯反演
- 【莫比乌斯反演】[BZOJ 2820 YY的GCD]
- 有限简单连分数求解
- django-1.11
- handler相关
- Introduction to Programming Languages.pdf 英文原版 免费下载
- LintCode_041_最大子数组
- bzoj2820 YY的GCD【莫比乌斯反演】
- 破解JetBrains家族IDE
- 取代人类医生?AI给你做的诊断你敢信吗
- More iPhone Development with Swift.pdf 英文原版 免费下载
- 是是是
- python学习—Day39—memcache常用方法
- Binder驱动情景分析
- 少时诵诗书
- 连黄牛党都开始玩AI了,春节抢票不加钱是回不去了