Cod sursa(job #2118498)
Utilizator | Data | 30 ianuarie 2018 18:23:29 | |
---|---|---|---|
Problema | Sum | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <cstdio>
const int MAXN = 1e5;
long long phi[MAXN + 1];
int main() {
int n, x;
FILE *fin = fopen("sum.in", "r");
fscanf(fin, "%d", &n);
for (int i = 2; i <= MAXN; ++i) {
phi[i] = i;
}
for (int i = 2; i <= MAXN; ++i) {
if (phi[i] == i) {
for (int j = i; j <= MAXN; j += i) {
phi[j] = phi[j] * (i - 1) / i;
}
}
}
FILE *fout = fopen("sum.out", "w");
for (int i = 0; i < n; ++i) {
fscanf(fin, "%d", &x);
fprintf(fout, "%lld\n", 1LL * 2 * x * phi[x]);
}
fclose(fin);
fclose(fout);
return 0;
}