Cod sursa(job #2369856)

Utilizator alexandra_paticaAndreea Alexandra Patica alexandra_patica Data 6 martie 2019 09:32:28
Problema Suma si numarul divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
#define NMax 1000000
using namespace std;
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");

int t, j;
long long aux, s, nr, p[79000], k, e, m, n;
bool v[NMax+5];

void ciur ()
{
    for (int i=2; i<=NMax; i++)
    {
        if (v[i]==0)
        {
            p[++k]=i;
            for (int j=2; j*i<=NMax; j++)
                v[i*j]=1;
        }
    }
}

int main ()
{
    ciur();

    f >> t;
    for (int i=1; i<=t; i++)
    {
        f >> n;

        j=1;
        s=1;
        nr=1;

        while (p[j]*p[j]<=n && j<=k)
        {
            e=0;
            m=p[j];

            while (n%p[j]==0)
            {
                n/=p[j];
                e++;
                m=m*p[j];
            }

            if (e>0)
            {
                s=(s*(m-1)/(p[j]-1))%9973;
                nr=nr*(e+1);
            }
            j++;
        }

        if (n>1)
        {
            nr*=2;
            s=(s*(n*n-1)/(n-1))%9973;
        }

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