当前位置: 首页 > article >正文

P1390 公约数的和

原题链接

自己推出式子的感觉真好。

来一个 O ( n ) O(n) O(n) 的,不需要任何高深知识,只要会线性欧拉筛法即可的做法。

简单而言就是套路的将求 gcd ⁡ \gcd gcd 转为枚举 gcd ⁡ \gcd gcd,求互质的数,然后将求和式子变化变化就行了。

∑ i = 1 n ∑ j = i + 1 n gcd ⁡ ( i , j ) = ∑ i = 1 n ∑ j = 1 n gcd ⁡ ( i , j ) 2 , ∑ i = 1 n ∑ j = 1 n gcd ⁡ ( i , j ) = ∑ d = 1 n d ∑ i = 1 n ∑ j = 1 n [ gcd ⁡ ( i , j ) = d ] = ∑ d = 1 n d ∑ i = 1 ⌊ n d ⌋ ∑ j = 1 ⌊ n d ⌋ [ gcd ⁡ ( i , j ) = 1 ] = ∑ d = 1 n d × 2 ∑ i = 1 ⌊ n d ⌋ ∑ j = 1 i [ gcd ⁡ ( i , j ) = 1 ] = ∑ d = 1 n d × 2 ∑ i = 1 ⌊ n d ⌋ φ ( i ) \begin{aligned} \sum_{i=1}^{n}\sum_{j=i+1}^{n}\gcd(i,j)&=\frac{\begin{aligned}\sum_{i=1}^{n}\sum_{j=1}^{n}\gcd(i,j)\end{aligned}}{2} , \\\sum_{i=1}^{n}\sum_{j=1}^{n}\gcd(i,j)&=\sum_{d=1}^{n}d\sum_{i=1}^{n}\sum_{j=1}^{n}[\gcd(i,j)=d] \\&=\sum_{d=1}^{n}d\sum_{i=1}^{ \left \lfloor \frac{n}{d} \right \rfloor }\sum_{j=1}^{\left \lfloor \frac{n}{d} \right \rfloor}[\gcd(i,j)=1] \\&=\sum_{d=1}^{n}d\times 2\sum_{i=1}^{ \left \lfloor \frac{n}{d} \right \rfloor }\sum_{j=1}^{i}[\gcd(i,j)=1] \\&=\sum_{d=1}^{n}d\times 2\sum_{i=1}^{ \left \lfloor \frac{n}{d} \right \rfloor }\varphi(i) \end{aligned} i=1nj=i+1ngcd(i,j)i=1nj=1ngcd(i,j)=2i=1nj=1ngcd(i,j)=d=1ndi=1nj=1n[gcd(i,j)=d]=d=1ndi=1dnj=1dn[gcd(i,j)=1]=d=1nd×2i=1dnj=1i[gcd(i,j)=1]=d=1nd×2i=1dnφ(i)

求一下欧拉函数的前缀和,就可以 O ( n ) O(n) O(n) 解决了。


http://www.kler.cn/a/414398.html

相关文章:

  • 屏幕分辨率|尺寸|颜色深度指纹修改
  • vue3 多种方式接受props,定义ref,reactive
  • R Excel 文件操作指南
  • 单点登录深入详解之技术方案总结
  • 详谈面试题:Vue、React为什么使用虚拟DOM
  • 3DMAX带孔绞线插件使用方法详解
  • (73)脉冲幅度调制PAM调制解调通信系统的MATLAB仿真
  • 力扣hot100-->前缀和/前缀书/LRU缓存
  • 文本的预处理(pytorch)
  • Ubuntu环境中RocketMQ安装教程
  • ROS VSCode调试方法
  • Linux 命令详解之 tail 命令
  • 【计算机视觉】图像基本操作
  • C++和C中的volatile 关键字
  • Apache Doris 现行版本 Docker-Compose 运行教程
  • 实现uniapp开发安卓应用使用AIDL与原生安卓通信
  • 《C++ 与神经网络:自动微分在反向传播中的高效实现之道》
  • jenkins 2.346.1最后一个支持java8的版本搭建
  • git的简单使用与gdb
  • LVGL加载器,led和列表学习(基于正点原子)
  • Django websocket 进行实时通信(消费者)
  • 第32周:猴痘病识别(Tensorflow实战第四周)
  • GitLab历史演进
  • 组成无重复数字的三位数
  • 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。-多语言
  • 第02章 使用VMware部署CENTOS系统