题目链接

题目

题目描述

因为月月是个信息学高手,所以她也给华华出了一题,让他求:

\(\sum_{i=1}^N\frac{i}{\gcd(i,N)}\)

但是因为这个式子实在太简单了,所以月月希望华华对N=1,2,...,n各回答一次。华华一脸懵逼,所以还是决定把这个问题丢给你。

输入描述

一个正整数n。

输出描述

输出n行,第i行表示N=i时的答案。

示例1

输入

6

输出

1
2
4
6
11
11

备注

\(1\le n\le 10^6\)

请注意输出的效率

题解

知识点:欧拉函数,因数集合,筛法。

简单推一下式子:

\[\begin{aligned}
\sum_{i=1}^{n} \frac{i}{\gcd(i,n)} &= \sum_{d \mid n} \sum_{i=1}^{n} \frac{i}{d}[\gcd(i,n) = d]\\
&= \sum_{d \mid n} \sum_{i=1}^{\frac{n}{d}} i\left[\gcd\left(i,\frac{n}{d} \right) = 1 \right]\\
&= \sum_{d \mid n} \frac{\frac{n}{d}\varphi \left( \frac{n}{d} \right) + [\frac{n}{d} = 1]}{2}\\
&= \sum_{d \mid n} \frac{d\varphi(d) + [d = 1]}{2}
\end{aligned}
\]

于是对于一个 \(i = n\) 的答案,只要枚举其因数即可。但对每个 \(i\) 枚举因子的复杂度是 \(\sqrt i\) ,会超时,因此我们使用倍数法枚举 \(i \in [1,n]\) 的区间所有数的因子,可以直接累加答案,复杂度是 \(O(n \log n)\) 的。

需要先线性预处理欧拉函数。

时间复杂度 \(O(n \log n)\)

空间复杂度 \(O(n)\)

代码

#include <bits/stdc++.h>
using namespace std;
using ll = long long; const int N = 1e6 + 7;
bool vis[N];
vector<int> prime;
int phi[N];
void get_euler(int n) {
phi[1] = 1;
for (int i = 2;i <= n;i++) {
if (!vis[i]) {
prime.push_back(i);
phi[i] = i - 1;
}
for (auto j : prime) {
if (i * j > n) break;
vis[i * j] = 1;
if (!(i % j)) {
phi[i * j] = j * phi[i];
break;
}
phi[i * j] = (j - 1) * phi[i];
}
}
} ll ans[N];
void get_factor(int n) {
for (int i = 1;i <= n;i++)
for (int j = 1;i * j <= n;j++)
ans[i * j] += (1LL * i * phi[i] + (i == 1)) / 2;
} int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n;
cin >> n;
get_euler(n);
get_factor(n);
for (int i = 1;i <= n;i++) cout << ans[i] << '\n';
return 0;
}

NC23048 月月给华华出题的更多相关文章

  1. 牛客小白月赛12 D 月月给华华出题 (欧拉函数,数论,线筛)

    链接:https://ac.nowcoder.com/acm/contest/392/D 来源:牛客网 月月给华华出题 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K, ...

  2. 牛客小白月赛12 C 华华给月月出题 (积性函数,线性筛)

    链接:https://ac.nowcoder.com/acm/contest/392/C 来源:牛客网 华华给月月出题 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K, ...

  3. 【ACM算法竞赛日常训练】DAY10题解与分析【月月给华华出题】【华华给月月出题】| 筛法 | 欧拉函数 | 数论

    DAY10共2题: 月月给华华出题 华华给月月出题 难度较大. 作者:Eriktse 简介:211计算机在读,现役ACM银牌选手力争以通俗易懂的方式讲解算法!️欢迎关注我,一起交流C++/Python ...

  4. Newcoder 华华给月月出题(线筛)题解

    题目描述: 华华刚刚帮月月完成了作业.为了展示自己的学习水平之高超,华华还给月月出了一道类似的题: Ans=⊕Ni=1(iNmod(109+7))Ans=⊕i=1N(iNmod(109+7)) ⊕⊕符 ...

  5. 牛客小白月赛12 J 月月查华华的手机(序列自动机)

    ---恢复内容开始--- 题目来源:https://ac.nowcoder.com/acm/contest/392/J 题意: 题目描述 月月和华华一起去吃饭了.期间华华有事出去了一会儿,没有带手机. ...

  6. 牛客网 牛客小白月赛12 B.华华教月月做数学-A^B mod P-快速幂+快速乘

    链接:https://ac.nowcoder.com/acm/contest/392/B来源:牛客网 华华教月月做数学 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其 ...

  7. E.华华给月月准备礼物

    链接:https://ac.nowcoder.com/acm/contest/392/E 题意: 二月中旬虐狗节前夕,华华决定给月月准备一份礼物.为了搭建礼物的底座,华华需要若干根同样长的木棍.华华手 ...

  8. B.华华教月月做数学

    链接:https://ac.nowcoder.com/acm/contest/392/B 题意: 找到了心仪的小姐姐月月后,华华很高兴的和她聊着天.然而月月的作业很多,不能继续陪华华聊天了.华华为了尽 ...

  9. 牛客小白月赛12 J 月月查华华的手机 (序列自动机模板题)

    链接:https://ac.nowcoder.com/acm/contest/392/J 来源:牛客网 题目描述 月月和华华一起去吃饭了.期间华华有事出去了一会儿,没有带手机.月月出于人类最单纯的好奇 ...

  10. NC23046 华华教月月做数学

    NC23046 华华教月月做数学 题目 题目描述 找到了心仪的小姐姐月月后,华华很高兴的和她聊着天.然而月月的作业很多,不能继续陪华华聊天了.华华为了尽快和月月继续聊天,就提出帮她做一部分作业. 月月 ...

随机推荐

  1. Redis 中bitMap使用及实现访问量

    1. Bitmap 是什么 Bitmap(也称为位数组或者位向量等)是一种实现对位的操作的'数据结构',在数据结构加引号主要因为: Bitmap 本身不是一种数据结构,底层实际上是字符串,可以借助字符 ...

  2. STM32CubeMX教程21 CAN - 双机通信

    1.准备材料 开发板(正点原子stm32f407探索者开发板V2.4) STM32CubeMX软件(Version 6.10.0) 野火DAP仿真器 keil µVision5 IDE(MDK-Arm ...

  3. Nacos源码 (4) 配置中心

    本文阅读nacos-2.0.2的config源码,编写示例,分析推送配置.监听配置的原理. 客户端 创建NacosConfigService对象 Properties properties = new ...

  4. Python追踪内存占用

    技术背景 当我们需要对python代码所占用的内存进行管理时,首先就需要有一个工具可以对当前的内存占用情况进行一个追踪.虽然在Top界面或者一些异步的工具中也能够看到实时的内存变化,还有一些工具可以统 ...

  5. 【SHELL】获取脚本输入参数

    参数获取 EXEC_PARAMS=(${@:index}) 示例 ./do.sh test a b c d e f EXEC_PARAMS=(${@:0}) ./do.sh test a b c d ...

  6. 【Git】如何在github上提交PR(Pull Request)

    [来源]https://mp.weixin.qq.com/s/yHQRjpVeZVV4PuoUKM0FSw

  7. [转帖]MySQL: Convert decimal to binary

    Last Update:2018-12-05 Source: Internet  Author: User Tags decimal to binary mysql code Developer on ...

  8. Harbor 简要安装说明

    Harbor 简要安装说明 下载最新的离线安装文件 链接:https://pan.baidu.com/s/1ZEjgnI3YmhsdVOm7h7SWcQ 提取码:GSNB 复制这段内容后打开百度网盘手 ...

  9. ElasticSearch必知必会-基础篇

    商业发展与职能技术部-体验保障研发组 康睿 姚再毅 李振 刘斌 王北永 说明:以下全部均基于eslaticsearch 8.1 版本 一.索引的定义 官网文档地址:https://www.elasti ...

  10. 在WPF应用中实现DataGrid的分组显示,以及嵌套明细展示效果

    我在前面随笔<在Winform系统开发中,对表格列表中的内容进行分组展示>,介绍了Winform程序中对表格内容进行了分组的展示,在WPF应用中,同样也可以对表格的内容进行分组展示,不过处 ...