Cod sursa(job #2533224)

Utilizator BAlexandruBorgovan Alexandru BAlexandru Data 28 ianuarie 2020 20:55:11
Problema Sum Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,x,i,j;
int v[317];
bool c[100001], c1[200001];
int p[9593], nrp;
int fact[100], nrf;

int main()
{
    c[0]=c[1]=1;
    for (i=2;i<=100000;i++)
        if (!c[i])
        {
            nrp++;
            p[nrp]=i;
            for (j=i*2;j<=100000;j+=i)
                c[j]=1;
        }

    f>>n;
    while (n--)
    {
        f>>x;
        int y=x;
        nrf=0;
        for (i=1;p[i]<=x;i++)
            if (x%p[i]==0)
            {
                while (x%p[i]==0)
                    x/=p[i];
                nrf++;
                fact[nrf]=p[i];
                /*if (!c[x/p[i]])
                {
                    nrf++;
                    fact[nrf]=x/p[i];
                }*/
            }
        if (!c[x])
        {
            nrf++;
            fact[nrf]=x;
        }

        y*=2;
        memset(c1, 0, y+1);
        long long s=(1LL*y*(y+1))/2;
        for (i=1;i<=nrf;i++)
            for (j=fact[i];j<=y;j+=fact[i])
            {
                if (!c1[j])
                    s-=j;
                c1[j]=1;
            }

        g<<s<<"\n";
    }
    return 0;
}