【题目】GCD of Divisors

【题意】给定f(n)=Σd|n gcd(d,n/d)的前缀和F(n),n=10^15。

【算法】莫比乌斯反演

【题解】参考:任之洲数论函数.pdf

这个范围显然杜教筛也是做不了的,而且考虑直接化简f(n)也遇到了困难,所以考虑将前缀和的Σ一起化简

$$F(n)=\sum_{i=1}^{n}\sum_{d|i}(d,\frac{i}{d})$$

这一步很常见的是第一重改为枚举倍数,但这样化简后面就推不下去了。

这道题必须最后转成$\sigma_0(n)$才能解出来。

所以直接枚举gcd值

$$F(n)=\sum_{d=1}^{n}d\sum_{i=1}^{n}\sum_{g|i}[(g,\frac{i}{g})=d]$$

这里gcd(g,i/g)=d,说明i中必须至少包含2个d,那么令i=i/d^2,g即可任取i的因子,最终的g和i/g各乘d即可,所以可以进行如下化简。(关键①)

$$F(n)=\sum_{d=1}^{n}d\sum_{i=1}^{\frac{n}{d^2}}\sum_{g|i}[(g,\frac{i}{g})=1]$$

转化成φ希望不大,所以直接莫比乌斯反演。

$$F(n)=\sum_{d=1}^{n}d\sum_{i=1}^{\frac{n}{d^2}}\sum_{g|i}\sum_{d'|g \cap d'|\frac{i}{g}}\mu(d')$$

$$F(n)=\sum_{d=1}^{n}\sum_{d'=1}^{n}d*\mu(d')\sum_{i=1}^{\frac{n}{d^2}}\sum_{g|i}[d'|g \cap d'|\frac{i}{g}]$$

这里和上面一样,都是要求d'|g&&d'|i/g,因此从i中提取2个d',即令i=i/d'^2。

$$F(n)=\sum_{d=1}^{n}\sum_{d'=1}^{n}d*\mu(d')\sum_{i=1}^{\frac{n}{(dd')^2}}\sum_{g|i}1$$

会发现后面是约数个数。(关键②)

$$F(n)=\sum_{d=1}^{n}\sum_{d'=1}^{n}d*\mu(d')\sum_{i=1}^{\frac{n}{(dd')^2}}\sigma_0(i)$$

前面部分发现d*μ(d')好像可以卷积到φ,考虑合并dd‘来构造卷积,令d=dd'。(关键③)

$$F(n)=\sum_{d=1}^{\sqrt{n}}\sum_{g|d}g*\mu(\frac{n}{g})\sum_{i=1}^{\frac{n}{(dd')^2}}\sigma_0(i)$$

这里d只枚举到√n,因为d>√n时后面的Σ=0,没有贡献。因此可以缩小实际枚举范围。(关键④)

然后根据狄利克雷卷积μ*id=φ可以化简

$$F(n)=\sum_{d=1}^{\sqrt{n}}\varphi(d)\sum_{i=1}^{\frac{n}{(dd')^2}}\sigma_0(i)$$

大功告成!

其中,约数个数的前缀和可以进行分块取值优化,如下

$$\sum_{i=1}^{n}\sigma_0(i)=\sum_{i=1}^{n}\sum_{d|i}1=\sum_{i=1}^{n}\sum_{j=1}^{\frac{n}{i}}1$$

$$\sum_{i=1}^{n}\sigma_0(i)=\sum_{i=1}^{n}\left \lfloor \frac{n}{i} \right \rfloor$$

然后线性筛φ的过程中求解即可。

复杂度分析:

$$\sum_{i=1}^{\sqrt{n}}O(\sqrt{\frac{n}{i^2}})=\sum_{i=1}^{\sqrt{n}}O(\frac{\sqrt{n}}{i})=O(\sqrt{n} ln \sqrt{n})$$

倒数第二步将√n提到最外面,Σ内就是调和数列,和近似为ln n。

#include<cstdio>
#include<cmath>
#define int long long
const int maxn=32000000;
int phi[maxn],n,prime[maxn],tot;
int solve(int n){int pos,sum=0;for(int i=1;i<=n;i=pos+1){pos=n/(n/i);sum+=(pos-i+1)*(n/i);}return sum;
}
#undef int
int main(){
#define int long longscanf("%lld",&n);int ans=1*solve(n),N=(int)sqrt(n)+1;phi[1]=1;//1for(int i=2;i<=N;i++){if(!phi[i])phi[prime[++tot]=i]=i-1;for(int j=1;j<=tot&&i*prime[j]<=N;j++){if(i%prime[j]==0){phi[i*prime[j]]=phi[i]*prime[j];break;}phi[i*prime[j]]=phi[i]*(prime[j]-1);}ans+=phi[i]*solve(n/(i*i));}printf("%lld",ans);return 0;
}

View Code

转载于:https://www.cnblogs.com/onioncyc/p/8488255.html

【Project Euler】530 GCD of Divisors 莫比乌斯反演相关推荐

  1. 数学--数论--HDU 4675 GCD of Sequence(莫比乌斯反演+卢卡斯定理求组合数+乘法逆元+快速幂取模)

    先放知识点: 莫比乌斯反演 卢卡斯定理求组合数 乘法逆元 快速幂取模 GCD of Sequence Alice is playing a game with Bob. Alice shows N i ...

  2. BZOJ 3930 Luogu P3172 选数 (莫比乌斯反演)

    BZOJ 3930 Luogu P3172 选数 (莫比乌斯反演) 手动博客搬家:本文发表于20180310 11:46:11, 原地址https://blog.csdn.net/suncongbo/ ...

  3. P2257 YY的GCD (莫比乌斯反演)

    [题目链接] https://www.luogu.org/problemnew/show/P2257 // luogu-judger-enable-o2 /* -------------------- ...

  4. BZOJ 2820 YY的GCD 莫比乌斯反演

    题意:链接 方法:莫比乌斯反演 解析: 这题跟上一篇博客有一点差别,当然我们能够考虑枚举素数这个大暴力.只是当你A掉这道题后发现正解?都将近5s时.就放弃了这个念头. 相同的式子我们能够直接搬过来.p ...

  5. BZOJ 2820 YY的GCD 莫比乌斯反演

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

  6. 【bzoj2820】YY的GCD 莫比乌斯反演

    题目描述 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必然不会了,于是 ...

  7. P2257-YY的GCD【莫比乌斯反演】

    正题 题目链接:https://www.luogu.com.cn/problem/P2257 题目大意 给出n,mn,mn,m,求∑i=1n∑j=1m[gcd(i,j)∈p]\sum_{i=1}^n\ ...

  8. hdu1695 GCD(莫比乌斯反演)

    题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌 ...

  9. HYSBZ - 2818 Gcd —— 莫比乌斯反演

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 8172  Solved: 3609 Description 给定整数N,求1&l ...

最新文章

  1. Pytorch学习 - Task6 PyTorch常见的损失函数和优化器使用
  2. js随机跳转域名_【教程】无需域名和服务器搭建属于自己的导航页!!!
  3. poe交换机的作用和优点
  4. linux dhcp客户端配置文件,各个版本DHCP配置文件的整理
  5. Bootstrap 堆叠式导航
  6. 最大功率点跟踪MPPT
  7. 【期末复习】微机原理与接口技术
  8. MIME 类型大全,你值得收藏
  9. 计算机桌面来回闪烁,电脑桌面图标一直闪
  10. 2021江苏考试院高考成绩查询入口,江苏省教育考试院2021年江苏高考成绩查询时间及系统入口...
  11. Android 局部刷新
  12. 跨交换机VLAN的配置实验
  13. 通过这一篇文章,可以把Java中的类加载器了解的七七八八了
  14. 沪深A股分析数据市场表现信息API接口(JSON标准格式,Get请求方式)
  15. MATLAB基于多目标算法的冷热电联供型综合能源系统运行优化
  16. python清空运行界面_如何清除python界面
  17. 记录自己学习GD32F103R 使用fmc的过程
  18. windows 以管理员身份打开命令行窗口
  19. 安卓仿ios控制中可录屏_iOS那些耗电的设定
  20. Windows必备的10款软件,提升办公效率!

热门文章

  1. Qt 学习之路:模型-视图高级技术
  2. 《编程匠艺》读书笔记
  3. 拷贝构造函数和赋值函数的一些知识
  4. 1476. Lunar Code
  5. 选项选择Windows XP系统安装MySQL5.5.28图解
  6. codecheck_use_record
  7. c语言信号机制以及中断
  8. WMI技术介绍和应用——查询文件夹信息
  9. 反汇编算法介绍和应用——线性扫描算法分析
  10. FFmpeg中可执行文件ffmpeg用法汇总