链接:https://ac.nowcoder.com/acm/contest/392/D
来源:牛客网

月月给华华出题
时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
因为月月是个信息学高手,所以她也给华华出了一题,让他求:
\sum_{i=1}^N\frac{i}{\gcd(i,N)}∑
i=1
N

gcd(i,N)
i

但是因为这个式子实在太简单了,所以月月希望华华对N=1,2,...,n各回答一次。华华一脸懵逼,所以还是决定把这个问题丢给你。
输入描述:
一个正整数n。
输出描述:
输出n行,第i行表示N=i时的答案。
示例1
输入
复制
6
输出
复制
1
2
4
6
11
11
备注:
1\le n\le 10^61≤n≤10
6

请注意输出的效率

思路:

最后一步是根据这个欧拉函数的一个得出的:

小于等于n的数中与n互质的数sum和为phi(n) * n/2

phi(x)为欧拉函数

由于题目要求输出1~n的每一个答案,那么我们从1到n枚举i当做上式中因子d来计算对每个答案的贡献即可。

细节见代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
#include <iomanip>
#define ALL(x) (x).begin(), (x).end()
#define sz(a) int(a.size())
#define all(a) a.begin(), a.end()
#define rep(i,x,n) for(int i=x;i<n;i++)
#define repd(i,x,n) for(int i=x;i<=n;i++)
#define pii pair<int,int>
#define pll pair<long long ,long long>
#define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define MS0(X) memset((X), 0, sizeof((X)))
#define MSC0(X) memset((X), '\0', sizeof((X)))
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define eps 1e-6
#define gg(x) getInt(&x)
#define chu(x) cout<<"["<<#x<<" "<<(x)<<"]"<<endl
using namespace std;
typedef long long ll;
ll gcd(ll a, ll b) {return b ? gcd(b, a % b) : a;}
ll lcm(ll a, ll b) {return a / gcd(a, b) * b;}
ll powmod(ll a, ll b, ll MOD) {ll ans = 1; while (b) {if (b % 2)ans = ans * a % MOD; a = a * a % MOD; b /= 2;} return ans;}
inline void getInt(int* p);
const int maxn = 1000010;
const int inf = 0x3f3f3f3f;
/*** TEMPLATE CODE * * STARTS HERE ***/
ll phi[maxn];
ll prime[maxn];
int check[maxn];
int tot = 0;
void build_phi()
{phi[1] = 1ll;memset(check, 0, sizeof(check));for (int i = 2; i < 1000010; ++i){if (!check[i]){prime[tot++] = i;phi[i] = i - 1;}for (int j = 0; j < tot; ++j){if (i * prime[j] > 1000010){break;}check[i * prime[j]] = 1;if (i % prime[j] == 0){phi[i * prime[j]] = phi[i] * prime[j];break;} else {phi[i * prime[j]] = phi[i] * (prime[j] - 1);}}}
}
ll ans[maxn];
int main()
{//freopen("D:\\common_text\\code_stream\\in.txt","r",stdin);//freopen("D:\\common_text\\code_stream\\out.txt","w",stdout);int n;scanf("%d", &n);build_phi();for (ll i = 1; i <= n; ++i){for (ll j = i; j <= n; j += i){ans[j] += phi[j / i] * (j / i) / 2ll;}}repd(i, 1, n){printf("%lld\n", ans[i] + 1ll );}return 0;
}inline void getInt(int* p) {char ch;do {ch = getchar();} while (ch == ' ' || ch == '\n');if (ch == '-') {*p = -(getchar() - '0');while ((ch = getchar()) >= '0' && ch <= '9') {*p = *p * 10 - ch + '0';}}else {*p = ch - '0';while ((ch = getchar()) >= '0' && ch <= '9') {*p = *p * 10 + ch - '0';}}
}

转载于:https://www.cnblogs.com/qieqiemin/p/11421643.html

牛客小白月赛12 D 月月给华华出题 (欧拉函数,数论,线筛)相关推荐

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

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

  2. 牛客小白月赛12:月月给华华出题(欧拉函数)

    月月给华华出题 思路 ∑i=1nigcd(i,n)\sum_{i = 1} ^{n} \frac{i}{gcd(i, n)}i=1∑n​gcd(i,n)i​ =∑d∣n∑i=1nid(gcd(i,d) ...

  3. 牛客小白月赛12 H 华华和月月种树 (离线dfs序+线段树)

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

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

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

  5. 牛客小白月赛12 I 华华和月月逛公园 (tarjian 求桥)

    链接:https://ac.nowcoder.com/acm/contest/392/I 来源:牛客网 华华和月月逛公园 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K, ...

  6. 华华给月月出题——牛客小白月赛12

    碰到个积性函数好题. 华华给月月出题:https://ac.nowcoder.com/acm/problem/23047 题目描述 华华刚刚帮月月完成了作业.为了展示自己的学习水平之高超,华华还给月月 ...

  7. 牛客小白月赛12 B.华华教月月做数学(Java)

    华华教月月做数学 题目链接:https://ac.nowcoder.com/acm/contest/392/B 题目描述 找到了心仪的小姐姐月月后,华华很高兴的和她聊着天.然而月月的作业很多,不能继续 ...

  8. 牛客小白月赛12 F 华华开始学信息学 (分块+树状数组)

    链接:https://ac.nowcoder.com/acm/contest/392/F 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536 ...

  9. 牛客小白月赛7 I.新建 Microsoft Office Word 文档

    牛客小白月赛7 I.新建 Microsoft Office Word 文档 题目链接 题目描述 CSL正在学习<计算机办公自动化>文件的建立与删除. CSL发现,当他新建一个word文档时 ...

最新文章

  1. 移动端适配方案 flexible.js
  2. kmemleak的使用
  3. linux下 udf提权_raven靶机实战(linux-udf提权)-vuluhub系列(四)
  4. linux 安装vlc源码包,linux Centons 6.5 下yum安装vlc
  5. OpenCore引导配置说明第五版
  6. structs2框架学习一(启动过程和各种配置)
  7. Linux预科知识篇之认识计算机
  8. android 预览和拍照成像方向不一致,Android相机预览方向深入探究
  9. iOS 支付宝支付 微信支付SDK接口不统一? 盘他!
  10. 目标检测的模型haartraining培训
  11. 【NA】拉格朗日插值法
  12. 吉尔布雷斯的动作研究——《可以量化…
  13. 计算机操作评分系统,使用Excel设计竞赛评分系统
  14. 永远不要去依赖别人_别太依赖一个人的说说 不依赖别人的经典语录_经典语录...
  15. EntityFrameWork Core从零开始,(九)继承影射的补充
  16. 网心科技入选2022中国边缘计算企业20强
  17. 基于微信小程序的学生选课系统
  18. 360°剖析:科创板“最”企业有什么不同?
  19. 神州数码DCFW-1800系列防火墙设备密码与配置恢复方法
  20. bat批处理---实现输入指定拷贝文件

热门文章

  1. QGS/300 performance issue
  2. SAP CRM服务订单状态和SAP S/4生产订单状态
  3. SAP CRM里business partner在订单处理中的determination流程
  4. Kubernetes里的ConfigMap的用途
  5. 如何通过Java代码判断当前的环境是否支持JRE 9
  6. 18岁初中毕业学Java_刚满十八 初中毕业 java自学完了 没学历 该怎么办?
  7. 证明kruskal算法求解图的最小生成树具有贪心选择性质_将并查集应用在图论中的最小生成树算法——Kruskal...
  8. 化工原理少学时答案解析_化工原理少学时知识点
  9. dsp 数据类型强制转换_JavaSE第二章总结—数据类型
  10. python敏感词过滤代码简单_大型企业都在用,Python实现敏感词过滤