Cod sursa(job #2917651)

Utilizator TheNamelessOneCiociia Marius Andrei TheNamelessOne Data 6 august 2022 16:21:07
Problema Sum Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream cin ("sum.in");
ofstream cout ("sum.out");

int N,x,ciur[200001],luat[200001];
unsigned long long S;
vector <int> prime;
queue <int> Q;

void Ciurul_lui_Eratostene ()
{
    ciur[0]=1;
    ciur[1]=1;
    for (int i=2; i<200001; ++i)
        for (int j=2; i*j<200001; ++j)
            ciur[i*j]=1;
}

void Clear()
{
    while (!Q.empty()){
        luat[Q.front()]=0;
        Q.pop();
    }
}

int main()
{
    Ciurul_lui_Eratostene();
    for (int i=0; i<200001; ++i)
        if (!ciur[i]) prime.push_back(i);

    cin>>N;
    for (int I=1; I<=N; ++I)
    {
        cin>>x;
        int x2=x*2;
        S=x2*(x2+1)/2;
        for (int i=0; i<prime.size() && prime[i]<=x2; ++i)
            if (x%prime[i]==0)
            {
                int a=prime[i];
                for (int j=a; j<=x2; j+=a)
                    if (!luat[j]){
                        S-=j;
                        luat[j]=1;
                        Q.push(j);
                    }
            }
        Clear();
        cout<<S<<"\n";
    }

    return 0;
}