博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 2190 仪仗队(欧拉函数)
阅读量:5994 次
发布时间:2019-06-20

本文共 1125 字,大约阅读时间需要 3 分钟。

题目连接:

题意:求gcd(x, y) = 1,  0 <= x, y <= n的对数

思路:这题范围是从0开始的,所以,会多出(1, 0)(0, 1)这两组,答案就是sigma(phi(i)) - 1 + 2

code:

1 #include 
2 #include
3 typedef long long LL; 4 const int MAXN = 100005; 5 6 LL phi[MAXN]; 7 int primes[MAXN]; 8 bool is[MAXN]; 9 int cnt;10 11 12 void init()13 {14 phi[1] = 1L;15 cnt = 0;16 memset(is, false, sizeof(is));17 for (int i = 2; i < MAXN; ++i) {18 if (!is[i]) {19 primes[cnt++] = i;20 phi[i] = i - 1;21 }22 for (int j = 0; j < cnt && i * primes[j] < MAXN; ++j) {23 is[i * primes[j]] = true;24 if (i % primes[j] == 0) phi[i * primes[j]] = phi[i] * primes[j];25 else phi[i * primes[j]] = phi[i] * (primes[j] - 1);26 }27 }28 }29 30 int main()31 {32 init();33 int n;34 while (scanf("%d", &n) != EOF) {35 LL ans = 0;36 --n;37 for (int i = 2; i <= n; ++i) phi[i] += phi[i - 1]; 38 ans += phi[n] * 2 + 1;39 printf("%lld\n", ans);40 }41 return 0;42 }

 

转载于:https://www.cnblogs.com/ykzou/p/4791755.html

你可能感兴趣的文章
写给社区的回顾和展望:TiDB 2019, Level Up !
查看>>
初级web前端开发工程师成长为大神的学习路线(附思维导图)
查看>>
css-盒模型
查看>>
基于Docker的日志分析平台(五)监控与报警
查看>>
GPU编程(一): Ubuntu下的CUDA8.0环境搭建
查看>>
2018年阿里云NoSQL数据库大事盘点
查看>>
Flutter之在Flutter布局中嵌入原生组件Android篇
查看>>
package.json里‘’^ ~“符号的意思
查看>>
手把手教写出XGBoost实战程序
查看>>
什么是 Substrate
查看>>
Vitalik:Casper 的过去、现在和未来
查看>>
算法(一):二分查找法
查看>>
【译】Swift算法俱乐部-暴力字符串搜索
查看>>
一个炫酷的录制音视频控件
查看>>
自学真的是java开发的正确打开方式么?
查看>>
从图形到像素:前端图形编程技术概览
查看>>
专访Connolly:为什么我们需要手动回归测试宣言?
查看>>
《The Corporate Startup》作者访谈
查看>>
红帽峰会2017第一天回顾:OpenShift,OpenShift,OpenShift
查看>>
如何找到Kafka集群的吞吐量极限?\n
查看>>