Cod sursa(job #2428539)

Utilizator AndreiStrAndrei Stroici AndreiStr Data 5 iunie 2019 18:41:20
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include<fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long n[11],i,nr,l,p,nn,suma,put,j;
long long k,maxim;
bool fol[1000001];
void ciur()
{
    long long  i,j;
    for(i=1; i*i<=maxim; i++)
        fol[i]=1;
    for(i=2; i*i<=maxim; i++)
        if(fol[i])
            for(j=i+i; j*i<=maxim; j+=i)
                fol[j]=0;
}
int main()
{
    f>>nn;
    for(i=1; i<=nn; i++)
    {
        f>>n[i];
        if(maxim<n[i])
            maxim=n[i];
    }
    ciur();
    for(l=1; l<=nn; l++)
    {
        nr=1;
        p=0;
        suma=1;
        for(i=2; i*i<=n[l]; i++)
        {
            p=0;
            if(n[l]%i==0 && fol[i]==1)
            {
                while(n[l]%i==0)
                {
                    n[l]=n[l]/i;
                    p++;
                }
                nr=nr*(p+1);
                put=1;
                for(j=1; j<=p+1; j++)
                    put=put*i;
                suma=suma*((put-1)/(i-1));
            }
        }
        g<<nr<<' '<<suma<<'\n';
    }
    return 0;
}