Cod sursa(job #2613597)

Utilizator Rares31100Popa Rares Rares31100 Data 9 mai 2020 23:25:52
Problema Sum Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <bits/stdc++.h>
#define K100 100000
#define LL long long

using namespace std;

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

int n,x,Div[K100+1];
LL suma[K100+1];
bitset <K100+1> ok;

LL gauss(LL nr)
{
    return ( nr * (nr+1) ) / 2;
}

void ciur()
{
    for(int i=2;i<=K100;i++)
        if(!ok[i])
        {
            if(!Div[i])
            {
                for(int j=i;j<=K100;j+=i)
                {
                    Div[j]++;
                    suma[j]-=gauss(2*j/i)*i;
                }
            }
            else if(Div[i]%2)
            {
                for(int j=i;j<=K100;j+=i)
                {
                    suma[j]-=gauss(2*j/i)*i;
                    ok[j]=1;
                }
            }
            else
            {
                for(int j=i;j<=K100;j+=i)
                {
                    suma[j]+=gauss(2*j/i)*i;
                    ok[j]=1;
                }
            }
        }

    for(int i=1;i<=K100;i++)
        suma[i]+=gauss(2*i);
}

int main()
{
    ciur();

    in>>n;

    while(n--)
    {
        in>>x;
        out<<suma[x]<<'\n';
    }

    return 0;
}