Cod sursa(job #2613565)

Utilizator Rares31100Popa Rares Rares31100 Data 9 mai 2020 22:35:11
Problema Sum Scor 85
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>
#define K100 100000
#define LL long long

using namespace std;

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

int Div[K100+1][7];
int n,x;
LL suma;

void ciur()
{
    for(int i=2;i<=K100;i++)
        if(Div[i][0]==0)
        {
            for(int j=i*2;j<=K100;j+=i)
                Div[j][ ++Div[j][0] ]=i;

            Div[i][ ++Div[i][0] ]=i;
        }
}

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

int main()
{
    ciur();

    in>>n;

    while(n--)
    {
        in>>x;

        suma = gauss(2*x);

        int nr,par;
        for(int i=1;i< 1<<Div[x][0]; i++)
        {
            nr=1;par=0;

            for(int j=1;j<=Div[x][0];j++)
                if( i&( 1<<(j-1) ) )
                {
                    nr*=Div[x][j];
                    par++;
                }

            if(par%2)
                suma-=gauss(2*x/nr)*nr;
            else
                suma+=gauss(2*x/nr)*nr;
        }

        out<<suma<<'\n';
    }

    return 0;
}