用户输出
67326849456
系统信息
Exited with return code 0
编号 | 题目 | 状态 | 分数 | 总时间 | 内存 | 代码 / 答案文件 | 提交者 | 提交时间 |
---|---|---|---|---|---|---|---|---|
#20743 | #1072. zzy与飞行棋 | Accepted | 100 | 111 ms | 4444 K | C++ 11 / 925 B | JM233333 | 2019-08-01 20:46:57 |
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
void get_phi(int n);
const int MAX = 5e5 + 5;
ll phi[MAX];
int primes[MAX];
int psize;
int main() {
// 预处理
get_phi(MAX - 5 + 1);
// freopen("test.txt", "r", stdin);
int n;
while (scanf("%d", &n) != EOF) {
// 求解
ll sum = 0;
for (int i = 1; i <= n; i++) {
sum += phi[i];
}
ll res = 6 * sum;
// 输出
printf("%lld\n", res);
}
return 0;
}
// 欧拉函数打表
void get_phi(int n) {
// 初始化
phi[1] = 1;
psize = 0;
// 欧拉筛法
for (int i = 2; i <= n; i++) {
if (phi[i] == 0) {
primes[++psize] = i;
phi[i] = i - 1;
}
for (int j = 1; j <= psize && i * primes[j] <= n; j++) {
if (i % primes[j] == 0) {
phi[i * primes[j]] = phi[i] * primes[j];
break;
} else {
phi[i * primes[j]] = phi[i] * (primes[j] - 1);
}
}
}
}