Cod sursa(job #1380318)

Utilizator bogdanciurezubogdan ciurezu bogdanciurezu Data 7 martie 2015 14:21:21
Problema Sum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#include <cmath>
#define nmax 200050

using namespace std;
ifstream f("sum.in");
ofstream g("sum.out");
int N, x, desc[nmax / 10];
bool v[nmax];
int des(){
    int nrDiv = 0, rad = sqrt(x) + 1, aux = x;
    if(aux % 2 == 0){
        desc[++nrDiv] = 2;
        do{
            aux /= 2;
        }while(aux % 2 == 0);
    }

    for(int i = 3; i <= rad ; i += 2)
        if(aux % i == 0){
           desc[++nrDiv] = i;
            do{
                aux /= i;
            }while(aux % i == 0);
        }
    if(nrDiv == 0) desc[++nrDiv] = aux;
    return nrDiv;
}
int main()
{int z, i, j, nr, X, S;
    f>>N;
    for(z = 1; z <= N; ++z){
        f>>x;
        S = 0;
        X = x * 2;
        nr = des();
        for(i = 1; i <= nr; ++i)
            for(j = desc[i]; j <= X; j += desc[i])
                v[j] = true;
        for(i = 1; i <= X; ++i)
            S += i * !v[i];
        g<<S<<'\n';
        for(i = 1; i <= X; ++i){
            v[i] = false;
        }
    }
    return 0;
}