51Nod-1188-最大公约数之和 V2
来源:互联网 发布:原始元素 知乎 编辑:程序博客网 时间:2024/06/06 04:50
ACM模版
描述
题解
题目要求所有小于等于
设
最后,回到本来的问题:
所以呢,最后就变成了一个预处理获取
代码
#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef long long ll;const int MAXN = 5e6 + 50;int N;ll ans[MAXN];int prime[MAXN];int phi[MAXN];bool flag[MAXN];void get_phi(){ int cnt = 0; memset(flag, true, sizeof(flag)); phi[1] = 1; for(int i = 2; i < MAXN; i++) { if (flag[i]) { prime[cnt++] = i; phi[i] = i - 1; } for (int j = 0; j < cnt; j++) { if (1ll * i * prime[j] > MAXN) { break; } flag[i * prime[j]] = false; if (i % prime[j] == 0) { phi[i * prime[j]] = prime[j] * phi[i]; break; } else { phi[i * prime[j]] = (prime[j] - 1) * phi[i]; } } }}void init(){ get_phi(); memset(ans, 0, sizeof(ans)); for (int i = 1; i < MAXN; i++) { for (int j = 2; j < MAXN; j++) { if (1ll * i * j < MAXN) { ans[1ll * i * j] += phi[j] * i; } else { break; } } } for (int i = 1; i < MAXN; i++) { ans[i] += ans[i - 1]; }}template <class T>inline void scan_d(T &ret){ char c; ret = 0; while ((c = getchar()) < '0' || c > '9'); while (c >= '0' && c <= '9') { ret = ret * 10 + (c - '0'), c = getchar(); }}template <class T>inline void print_d(T x){ if (x > 9) { print_d(x / 10); } putchar(x % 10 + '0');}int main(){ init(); int T; scan_d(T); while (T--) { scan_d(N); print_d(ans[N]); putchar(10); } return 0;}
阅读全文
0 0
- 51nod 1188 最大公约数之和 V2
- 51Nod-1188-最大公约数之和 V2
- 51 NOD 1188 最大公约数之和 V2(基础数论)
- [欧拉函数]51nod 1188 最大公约数之和 V2 题解
- 51 nod 1188 最大公约数之和 V2(狄利克雷卷积+线性筛法)
- 【51Nod 1188】最大公约数之和2
- [51nod1188]最大公约数之和 V2
- 51nod 1040:最大公约数之和
- [51nod]1040 最大公约数之和
- 【51Nod 1040】最大公约数之和
- 【51Nod 1040】最大公约数之和
- 51Nod-1040-最大公约数之和
- 51nod 1040 最大公约数之和
- 【51Nod 1040】 最大公约数之和
- 51nod-1040 最大公约数之和
- 51nod 1040 最大公约数之和
- 51nod 1040 最大公约数之和
- 51Nod 1040 最大公约数之和
- caffe源码追踪--layer
- mysql 中的and和or
- Ubuntu 安装 搜狗输入法之最简单的方法
- 中标麒麟高级服务器6.0安装KVM
- 563. Binary Tree Tilt
- 51Nod-1188-最大公约数之和 V2
- IO流——打印流(PrintWriter和PrintStream类)
- POJ 3523 The Morning after Halloween 搜索
- POJ-2255 Tree Recovery
- 10 款下载神器
- Django创建数据表
- populating-next-right-pointers-in-each-node II
- 编程之美
- 优化Oracle数据库,有两种方式