JZOJ 4496. 【GDSOI 2016】第一题 互补约数
\(\text{Problem}\)
求
\]
有 \(n \le 10^{11}\)
\(\text{Analysis}\)
一眼就知道要欧拉反演(虽然考场写了莫反)
那么就要套路套路地推式子了
先给出欧拉反演的一般形式
\]
然后对题目中的式子推导一波
\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\) 直接走莫反了
于是推了这么一个东西
\]
单单数论分快暴力跑显然过不了
发现可以预处理后面一坨式子,因为 \(d^2k^2\) 的取值只有 \(O(\sqrt n)\) 种
JZOJ 4496. 【GDSOI 2016】第一题 互补约数的更多相关文章
- 2016/1/12 第一题 输出 i 出现次数 第二题 用for循环和if条件句去除字符串中空格 第三题不用endwith 实现尾端字符查询
import java.util.Scanner; public class Number { private static Object i; /* *第一题 mingrikejijavabu中字符 ...
- [算法 笔记]2014年去哪儿网 开发笔试(续)第一题BUG修正
上一篇的blog地址为:http://www.cnblogs.com/life91/p/3313868.html 这几天又参加了一个家公司的笔试题,在最后的编程题中竟然出现了去哪儿网开发的第一题,也就 ...
- 《学习OpenCV》练习题第五章第一题ab
这道题是载入一幅带有有趣纹理的图像并用不同的模板(窗口,核)大小做高斯模糊(高斯平滑),然后比较用5*5大小的窗口平滑图像两次和用11*11大小的窗口平滑图像一次是否接近相同. 先说下我的做法,a部分 ...
- 《学习OpenCV》练习题第四章第一题b&c
#include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...
- 《学习OpenCV》练习题第四章第一题a
#include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...
- Google Code Jam 第一题
通过的第一题,留做纪念,呵呵,非常简单,Africa 2010, Qualification Round: Store Credit. #include <stdio.h> #includ ...
- 图论测试题(一)第一题:longest
第一题:longest 乌托邦有n个城市,某些城市之间有公路连接.任意两个城市都可以通过公路直接或者间接到达,并且任意两个城市之间有且仅有一条路径(What does this imply? A tr ...
- ZOJ 2334(Monkey King-左偏树第一题)
Monkey King Time Limit: 10 Seconds Memory Limit: 32768 KB Once in a forest, there lived N aggre ...
- BZOJ 3172([Tjoi2013]单词-后缀数组第一题+RMQ)
3172: [Tjoi2013]单词 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 268 Solved: 145 [ Submit][ St ...
- NOIP2005-普及组复赛-第一题-陶陶摘苹果
题目描述 Description 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳 ...
随机推荐
- 【Shell案例】【wc记录单词长度、for循环和if、awk文本分析工具】7、打印字母数小于8的单词
描述写一个 bash脚本以统计一个文本文件 nowcoder.txt中字母数小于8的单词. 示例:假设 nowcoder.txt 内容如下:how they are implemented and a ...
- 【每日一题】【DFS】2022年1月5日-543. 二叉树的直径
给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 答案: /** * Definition for a binary ...
- 干电池升压5V,功耗比较低
干电池升压5V,功耗10uA PW5100干电池升压5V芯片 输出电容: 所以为了减小输出的纹波,需要比较大的输出电容值.但是输出电容过大,就会使得系统的 反应时间过慢,成本也会增加.所以建议使用一个 ...
- vue项目中配置scss
之前创建 vue 项目的时候没有选择 scss 预编译,现在项目中要使用,不知道如何配置,网上搜了下全都是: npm install sass-loader --save-devnpm instal ...
- 从0到1学Python丨图像平滑方法的两种非线性滤波:中值滤波、双边滤波
摘要:常用于消除噪声的图像平滑方法包括三种线性滤波(均值滤波.方框滤波.高斯滤波)和两种非线性滤波(中值滤波.双边滤波),本文将详细讲解两种非线性滤波方法. 本文分享自华为云社区<[Python ...
- Redis 如何批量设置过期时间?PIPLINE的使用
合理的使用缓存策略对开发同学来讲,就好像孙悟空习得自在极意功一般~ 抛出问题 Redis如何批量设置过期时间呢? 不要说在foreach中通过set()函数批量设置过期时间 给出方案 我们引入redi ...
- 无旋树堆(FHQ-Treap)学习笔记
简介 无旋树堆(一般统称 \(\text{FHQ-Treap}\)),是一种平衡树.可以用很少的代码达到很优秀的复杂度. 前置知识: 二叉搜索树 \(\text{BST}\) \(\text{Trea ...
- Docker 基础 - 2
容器操作系统类型 Busybox 集成了一百多个最常用 Linux 命令和工具的软件工具箱. 包含cat echo grep find mount telnet 等 Busybox 是Linux 系统 ...
- ionic+vue+capacitor系列笔记--03项目使用Native插件
话不多说,直接上代码 下载依赖 npm install @capacitor/camera 添加权限配置代码到安卓文件夹里的 AndroidManifest.xml <uses-permissi ...
- Docker+nginx部署前后端分离项目
1.下载Docker和Docker-Compose 1.安装Docker 记一次踩坑:误装podman-docker 问题概述:Centos8去下载Docker时,默认装的是podman-docker ...