Cod sursa(job #1043017)
Utilizator | Data | 27 noiembrie 2013 21:47:57 | |
---|---|---|---|
Problema | Sum | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.54 kb |
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <cstring>
#define NMAX 100010
using namespace std;
int n, phi[NMAX];
long long x;
void solve_phi ()
{
for (int i=1; i<=NMAX; ++i)
phi[i]=i-1;
for (int i=2; i<=NMAX; ++i)
{
for (int j=2*i; j<=NMAX; j+=i)
phi[j]-=phi[i];
}
}
int main ()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf ("%d", &n);
solve_phi ();
for (int i=1; i<=n; ++i)
{
scanf ("%lld", &x);
printf ("%lld\n", 2*phi[x]*x);
}
return 0;
}