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厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳 ...
随机推荐
- 第二章:seaborn调色板
1.系统默认调色板 1 import seaborn as sns 2 import matplotlib.pyplot as plt 3 4 # 设置画布的大小 5 sns.set(context= ...
- JDK中内嵌JS引擎介绍及使用
原文: JDK中内嵌JS引擎介绍及使用 - Stars-One的杂货小窝 最近研究阅读这个APP,其主要功能就是通过一个个书源,从而实现移动端阅读的体验 比如说某些在线小说阅读网站,会加上相应的广告, ...
- 24V转5V,24V转3.3V稳压芯片的电路图,,PCB和BOM
1,PW6206与PW6513系列是一款高精度,40V高输入电压,低静态电流,低压降线性稳压器具有高纹波抑制.在VOUT=5V&VIN=7V时,负载电流高达300mA,(输入与输出电压的压差越 ...
- 天坑,这样一个lambda随机取数据也有Bug
前几天,一位网友跟我说他编写的一段很简单的代码遇到了奇怪的Bug,他要达到的效果是从一个List中随机取出来一条数据,代码如下: 1 var random = new Random(); 2 var ...
- Ubuntu20.04更换国内镜像源(阿里、网易163、清华、中科大)
更换方法 Ubuntu采用apt作为软件安装工具,其镜像源列表记录在/etc/apt/source.list文件中. 首先将source.list复制为source.list.bak备份,然后将sou ...
- 你不知道的Map家族中的那些冷门容器
概述 本篇文章主要讲解下Map家族中3个相对冷门的容器,分别是WeakHashMap.EnumMap.IdentityHashMap, 想必大家在平时的工作中也很少用到,或者压根不知道他们的特性以及适 ...
- (数据科学学习手札147)Python GIS利器shapely全新2.0版本一览
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,我写过很多篇介绍geopand ...
- 基于 Traefik 的激进 TLS 安全配置实践
前言 Traefik是一个现代的HTTP反向代理和负载均衡器,使部署微服务变得容易. Traefik可以与现有的多种基础设施组件(Docker.Swarm模式.Kubernetes.Marathon. ...
- BZOJ4919 大根堆(树形dp+线段树合并)
用 multiset 启发式合并贪心维护 LIS 的做法就不多说了,网上题解一大堆,着重讲一下线段树合并维护 \(dp\). \(O(n^2)\) 的 \(dp\) 非常显然.离散化后,设 \(dp[ ...
- 官网下载CentOS系统镜像过程
想学习CentOS系统,但是不知道镜像去哪里搞,随便去个第三方发现要么要注册,要么各种广告病毒,或者好不容易找到官网,不仅全英文,有些专业术语也不懂,本文说明官网下载自己想要的CentOS镜像整个流程 ...