Cod sursa(job #118139)
| Utilizator | Data | 23 decembrie 2007 10:23:35 | |
|---|---|---|---|
| Problema | Sum | Scor | 75 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.56 kb |
#include <cstdio>
const int maxn = 100001;
FILE *in = fopen("sum.in","r"), *out = fopen("sum.out","w");
int n;
int phi[maxn];
int main()
{
fscanf(in, "%d", &n);
for (int i = 1; i <= 100000; ++i)
phi[i] = i-1;
for ( int i = 2; i <= 100000; ++i )
for ( int j = i << 1; j <= 100000; j += i )
phi[j] -= phi[i];
int x;
for ( int i = 1; i <= n; ++i )
{
fscanf(in, "%d", &x);
fprintf(out, "%lld\n", (unsigned long long)((unsigned long long)(phi[x]*x)*2));
}
return 0;
}
