Cod sursa(job #462394)

Utilizator SpiderManSimoiu Robert SpiderMan Data 10 iunie 2010 18:22:46
Problema Sum Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
# include <cstdio>

const char FIN[] = "sum.in", FOU[] = "sum.out";
const int MAX = 100005, hg = 1 << 13;

int V[MAX];
int T, X, poz;

char ch[hg];

inline void cit (int &x)
{
    x = 0;
    if ( ch[0] == '\0' ) fread (ch, 1, hg, stdin);
    else while ( ch[poz] < '0' || ch[poz] > '9' )
            if ( ++poz == hg )
                fread (ch, 1, hg, stdin), poz = 0;

    while ( ch[poz] >= '0' && ch[poz] <= '9' )
    {
        x = x * 10 + ch[poz] - '0';
        if ( ++poz == hg )
            fread (ch, 1, hg, stdin), poz = 0;
    }
}

void ciur ()
{
   for ( int i = 1; i <= MAX; ++i )
        V[i] = i;

    for ( int i = 2; i <= MAX; ++i )
        if ( V[i] == i )
            for ( int j = i; j <= MAX; j += i )
                V[j] /= i, V[j] *= (i - 1) ;
}
int main()
{
    freopen ( FIN, "r", stdin );
    freopen ( FOU, "w", stdout );

    ciur () ;

    for ( cit ( T ) ; T ; --T )
    {
        cit ( X ) ;
        printf("%lld\n" , ( long long ) V[X] * X << 1);
    }

    return 0;
}