Cod sursa(job #953139)

Utilizator classiusCobuz Andrei classius Data 25 mai 2013 00:34:46
Problema Sum Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#include <vector>
#include <stack>

using namespace std;
ifstream f("sum.in");
ofstream g("sum.out");

void erst(vector<int>&);
inline long long sum(int x)
{
    return x*(x+1)/2;
}

int main()
{
    int t;
    vector<int> p;
    f>>t;

    erst(p);

    while(t--){
        int x,a;
        f>>x;
        a=x;

        vector<int> fct;

        for(size_t i=0;i<p.size()&&x!=1;++i){
            if(x%p[i]==0)
                fct.push_back(p[i]);
            while(x%p[i]==0)
                x/=p[i];
        }

        long long s=sum(2*a);

        for(size_t i=0;i<fct.size();++i)
            s-=fct[i]*sum((2*a/fct[i]));

        for(size_t i=0;i<fct.size();++i)
            for(size_t j=i+1;j<fct.size();++j)
                s+=fct[i]*fct[j]*sum(2*a/(fct[i]*fct[j]));

        g<<s<<'\n';

    }

    return 0;
}

void erst(vector<int>& v)
{
    vector<bool> ok(500,0);
    for(int i=2;i<500;i++){

        if(!ok[i]){
            v.push_back(i);

            for(int j=2;j*i<500;j++)
                ok[i*j]=1;
        }
    }
}