Cod sursa(job #982534)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 9 august 2013 14:04:53
Problema Sum Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

#define Nmax 100001

unsigned int ciur[Nmax], n, nr, i, l;

void gen()
{
    for ( int i = 2; i <= Nmax; ++i )
            ciur[i] = i - 1;

    for ( int i = 2; i <= Nmax; ++i )
    {
            for ( int j = i << 1; j <= Nmax; j += i )
                    ciur[j] -= ciur[i];

            ciur[i] *= ( i << 1 );
    }
}

int main()
{
    ifstream f("sum.in");
    ofstream g("sum.out");

    gen();

    f >> n;

    string FileData( ( istreambuf_iterator<char>(f) ), istreambuf_iterator<char>() );

    l = FileData.length();

    for ( int i = 0; i < l; ++i )
            if ( isdigit( FileData[i] ) )
                    nr = nr * 10 + ( FileData[i] - 48 );
            else
            {
                if ( nr != 0 )
                    g << ciur[nr] << "\n";
                nr = 0;
            }

    f.close();
    g.close();

    return 0;
}