Cod sursa(job #2354494)

Utilizator BAlexandruBorgovan Alexandru BAlexandru Data 25 februarie 2019 12:42:23
Problema Suma si numarul divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;

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

int t,i,j;
long long x,nr,s,divizor;

void nrdiv_sumadiv(long long x)
{
    long long d;
    nr=1;
    s=1;
    int k;
    for (d=2;d*d<=x;d++)
    {
        k=0;
        while (x%d==0)
        {
            x=x/d;
            k++;
        }
        if (k)
        {
            nr=nr*(k+1);

            divizor=1;
            for (int i=1;i<=k+1;i++)
                divizor=divizor*d;
            s=s*((divizor-1)/(d-1));
        }
    }
    if (x>1)
    {
        nr=nr*2;
        s=s*((x*x-1)/(x-1));
    }
}

int main()
{
    f>>t;
    for (i=1;i<=t;i++)
    {
        f>>x;
        nrdiv_sumadiv(x);
        g<<nr<<" "<<s<<"\n";
    }
    return 0;
}