博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P2568 GCD
阅读量:4452 次
发布时间:2019-06-07

本文共 1982 字,大约阅读时间需要 6 分钟。

设 $f[x]=\sum_i^N\sum_j^N[gcd(i,j)==x]$

那么答案就是 $Ans=\sum_{prime}f(prime)$

显然 $f$ 可以反演,设 $F[x]=\sum_i^N\sum_j^N[x|gcd(i,j)]$

那么 $F[x]=\sum_{x|d}f[d]$,并且容易得到 $F[x]=\left \lfloor \frac{N}{x} \right \rfloor \left \lfloor \frac{N}{x} \right \rfloor$

直接反演得到 $f[x]=\sum_{x|d}\mu(d/x)F[d]=\sum_{x|d}\mu(d/x)\left \lfloor \frac{N}{x} \right \rfloor \left \lfloor \frac{N}{x} \right \rfloor$

枚举 $x$ 的倍数 $k$,得到 $f[x]=\sum_k\mu(k)\left \lfloor \frac{N}{kx} \right \rfloor \left \lfloor \frac{N}{kx} \right \rfloor$

因为 $\left \lfloor \frac{N}{kx} \right \rfloor=\left \lfloor \frac{\left \lfloor \frac{N}{x} \right \rfloor}{k} \right \rfloor$

所以 $f[x]==\sum_k\mu(k)\left \lfloor \frac{\left \lfloor \frac{N}{x} \right \rfloor}{k} \right \rfloor\left \lfloor \frac{\left \lfloor \frac{N}{x} \right \rfloor}{k} \right \rfloor$

可以数论分块,然后枚举质数 $p$ 并把所有的 $f[p]$ 加起来就是答案了

质数约有 $sqrt(n)$ 个,单次求 $f$ 复杂度 $sqrt(n)$,总复杂度 $O(n)$

#include
#include
#include
#include
#include
using namespace std;typedef long long ll;inline int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return x*f;}const int N=2e7+7;int n,pri[N],mu[N],tot;bool not_pri[N];ll ans;void pre(){ mu[1]=1; for(int i=2;i<=n;i++) { if(!not_pri[i]) pri[++tot]=i,mu[i]=-1; for(int j=1;j<=tot;j++) { ll g=1ll*i*pri[j]; if(g>n) break; not_pri[g]=1; if(!(i%pri[j])) break; mu[g]=-mu[i]; } } for(int i=2;i<=n;i++) mu[i]+=mu[i-1];}int main(){ n=read(); pre(); for(int i=1;i<=tot;i++) { int p=pri[i],m=n/p; for(int l=1,r;l<=m;l=r+1) { r=m/(m/l); ans+=1ll*(mu[r]-mu[l-1])*(m/l)*(m/l); } } printf("%lld\n",ans); return 0;}

 

转载于:https://www.cnblogs.com/LLTYYC/p/11136444.html

你可能感兴趣的文章
好久没敲代码了,手有点生——一个小小的时钟
查看>>
运算符 AS和IS 的区别
查看>>
(转)详解C中volatile关键字
查看>>
easyui时的时间格式yyyy-MM-dd与yyyy-MM-ddd HH:mm:ss
查看>>
专题:动态内存分配----基础概念篇
查看>>
Codeforces Round #426 (Div. 2) (A B C)
查看>>
The Most Simple Introduction to Hypothesis Testing
查看>>
UVA10791
查看>>
P2664 树上游戏
查看>>
jQuery 停止动画
查看>>
Sharepoint Solution Gallery Active Solution时激活按钮灰色不可用的解决方法
查看>>
MyBatis Generator去掉生成的注解
查看>>
教你50招提升ASP.NET性能(二十二):利用.NET 4.5异步结构
查看>>
lua连续随机数
查看>>
checkstyle使用介绍
查看>>
history.js 一个无刷新就可改变浏览器栏地址的插件(不依赖jquery)
查看>>
会了这十种Python优雅的写法,让你工作效率翻十倍,一人顶十人用!
查看>>
二维码图片生成
查看>>
在做操作系统实验的一些疑问
查看>>
Log4J日志配置详解
查看>>