\(\text{Problem}\)

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

有 \(n \le 10^{11}\)

\(\text{Analysis}\)

一眼就知道要欧拉反演(虽然考场写了莫反)

那么就要套路套路地推式子了

先给出欧拉反演的一般形式

\[n = \sum_{d|n} \varphi(d)
\]

然后对题目中的式子推导一波

\[\begin{aligned}
\sum_{i=1}^n \sum_{d|i} \gcd(d, \frac{i}{d})
&= \sum_{xy \le n} \gcd(x,y) \\
&= \sum_{xy \le n} \sum_{d|\gcd(x,y)} \varphi(d) \\
&= \sum_{d=1}^{\sqrt n} \varphi(d) \sum_{d|x} \sum_{d|y} 1 \\
&= \sum_{d=1}^{\sqrt n} \varphi(d) \sum_{x=1}^{\lfloor \frac{n}{d^2} \rfloor} \lfloor \frac{n}{xd^2} \rfloor\\
\end{aligned}
\]

发现这个式子后面可以数论分块

然后直接计算复杂度是 \(O(\sqrt n \log \sqrt n)\)

可以通过 \(10^{11}\)

\(\text{Code}\)

#include<cstdio>
#define LL long long
using namespace std; LL n; int vis[1000005], prime[600005], phi[1000005], totp;
inline void Euler()
{
vis[1] = 1, phi[1] = 1;
for(register int i = 2; i <= 1e6; i++)
{
if (!vis[i]) prime[++totp] = i, phi[i] = i - 1;
for(register int j = 1; j <= totp && prime[j] * i <= 1e6; j++)
{
vis[prime[j] * i] = 1;
if (i % prime[j]) phi[prime[j] * i] = (prime[j] - 1) * phi[i];
else{phi[prime[j] * i] = prime[j] * phi[i]; break;}
}
}
} inline LL solve()
{
LL sum = 0;
for(register LL d = 1; d * d <= n; d++)
{
LL s = 0, m = n / d / d, j;
for(register LL i = 1; i * d * d <= n; i = j + 1)
{
j = m / (m / i);
s += (j - i + 1) * (m / i);
}
sum += phi[d] * s;
}
return sum;
} int main()
{
freopen("gcd.in", "r", stdin), freopen("gcd.out", "w", stdout);
Euler(), scanf("%lld", &n), printf("%lld\n", solve());
}

因为原式是一个 \(\gcd\) 的形式,一个数算入贡献

所以我们走欧拉反演的路

但考场看到 \(\gcd\) 直接走莫反了

于是推了这么一个东西

\[\sum_{d=1}^{\sqrt n} \sum_{k=1}^{\sqrt \lfloor \frac{n}{d^2} \rfloor} \mu(k) \sum_{i=1}^{\lfloor \frac{n}{d^2k^2} \rfloor} \lfloor \frac{n}{id^2k^2} \rfloor
\]

单单数论分快暴力跑显然过不了

发现可以预处理后面一坨式子,因为 \(d^2k^2\) 的取值只有 \(O(\sqrt n)\) 种

JZOJ 4496. 【GDSOI 2016】第一题 互补约数的更多相关文章

  1. 2016/1/12 第一题 输出 i 出现次数 第二题 用for循环和if条件句去除字符串中空格 第三题不用endwith 实现尾端字符查询

    import java.util.Scanner; public class Number { private static Object i; /* *第一题 mingrikejijavabu中字符 ...

  2. [算法 笔记]2014年去哪儿网 开发笔试(续)第一题BUG修正

    上一篇的blog地址为:http://www.cnblogs.com/life91/p/3313868.html 这几天又参加了一个家公司的笔试题,在最后的编程题中竟然出现了去哪儿网开发的第一题,也就 ...

  3. 《学习OpenCV》练习题第五章第一题ab

    这道题是载入一幅带有有趣纹理的图像并用不同的模板(窗口,核)大小做高斯模糊(高斯平滑),然后比较用5*5大小的窗口平滑图像两次和用11*11大小的窗口平滑图像一次是否接近相同. 先说下我的做法,a部分 ...

  4. 《学习OpenCV》练习题第四章第一题b&c

    #include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...

  5. 《学习OpenCV》练习题第四章第一题a

    #include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...

  6. Google Code Jam 第一题

    通过的第一题,留做纪念,呵呵,非常简单,Africa 2010, Qualification Round: Store Credit. #include <stdio.h> #includ ...

  7. 图论测试题(一)第一题:longest

    第一题:longest 乌托邦有n个城市,某些城市之间有公路连接.任意两个城市都可以通过公路直接或者间接到达,并且任意两个城市之间有且仅有一条路径(What does this imply? A tr ...

  8. ZOJ 2334(Monkey King-左偏树第一题)

    Monkey King Time Limit: 10 Seconds      Memory Limit: 32768 KB Once in a forest, there lived N aggre ...

  9. BZOJ 3172([Tjoi2013]单词-后缀数组第一题+RMQ)

    3172: [Tjoi2013]单词 Time Limit: 10 Sec   Memory Limit: 512 MB Submit: 268   Solved: 145 [ Submit][ St ...

  10. NOIP2005-普及组复赛-第一题-陶陶摘苹果

    题目描述 Description 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳 ...

随机推荐

  1. docker给已存在的容器添加或修改端口映射

    简述: 这几天研究了一下docker, 发现建立完一个容器后不能增加端口映射了,因为 docker run -p 有 -p 参数,但是 docker start 没有 -p 参数,让我很苦恼,无奈谷歌 ...

  2. 程序员面试干货:漫谈计算机网络:数据链路层 ----- 数据链路路在何方? --从点对点数据传输 到 "广泛撒网,重点捕获"的局域网

    面试答不上?计网很枯燥? 听说你学习 计网 每次记了都会忘? 不妨抽时间和我一起多学学它 深入浅出,用你的空闲时间来探索计算机网络的硬核知识! 博主的上篇连载文章<初识图像处理技术> 图像 ...

  3. 架构解析:Dubbo3 应用级服务发现如何应对双11百万集群实例

    继业务全面上云后,今年双11,阿里微服务技术栈全面迁移到以 Dubbo3 为代表的云上开源标准中间件体系.在业务上,基于 Dubbo3 首次实现了关键业务不停推.不降级的全面用户体验提升,从技术上,大 ...

  4. Blazor和Vue对比学习(进阶.路由导航一):基本使用

    Blazor和Vue都是单文件组件SPA,路由的实现逻辑非常相似,页面路径的改变都是组件的切换,但因为各自语言的特性,在实现方式上有较大差异. 一.安装 1.Vue:Router是Vue的一个插件.如 ...

  5. 【Spark】Day05-内核解析:组件、流程、部署、运行模式、通讯架构、任务调度(Stage、task级)、两种Shuffle机制、内存管理、核心组件

    一.内核概述 内核:核心组件的运行机制.任务调度.内存管理.运行原理 1.核心组件 (1)Driver驱动器节点:执行main方法,将程序转化为作业job,在executor中调度任务task,跟踪并 ...

  6. Mybatis-Plus 对 json 的存储使用支持

    Mybatis-Plus 对 json 的存储使用支持 场景分析: 随着数据库对字段类型支持的多元化,json 类型的存储已成为多场景高频使用的字段类型.而 MySql.postgrpSql 等都支持 ...

  7. Ubuntu 22.04 搭建K8s集群

    目录 1. 虚拟机基础配置 配置静态ip 设置主机名 设置hosts 安装ssh 2. Ubuntu系统设置 禁用swap 修改内核参数 3. 安装containerd 4. 安装Kubernetes ...

  8. 2022-6.824-Lab1:Map&Reduce

    lab 地址 : https://pdos.csail.mit.edu/6.824/labs/lab-mr.html 1. 介绍 准备工作 阅读 MapReduce 做什么 实现一个分布式的 Map ...

  9. IDEA引入本地jar包的几种方法

    有时候,项目需要引入一些第三方的依赖,这时候,就需要导入这些jar包.以下分享两种方式: 方式一.使用IDEA程序引入jar包 1.首先,点他! 2.然后,点他! 3.再然后,点他! 4.最后,在这里 ...

  10. js实现n秒内只能点击一次操作

    <button @click="submit">5秒内只能点一次</button>