Cod sursa(job #2516535)

Utilizator Rares31100Popa Rares Rares31100 Data 1 ianuarie 2020 14:03:26
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>
#define Mod 9973

using namespace std;

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

int t;
long long n;
int fact[1001],numFact[1001],nr;
long long nrDiv,sumDiv;

void div_fact(long long x)
{
    nr=0;

    for(long long d=2;d<=(long long)sqrt(x) && x!=1;d++)
        if(x%d==0)
        {
            fact[++nr]=d;
            numFact[nr]=0;

            while(x%d==0)
            {
                numFact[nr]++;
                x/=d;
            }
        }

    if(x!=1)
    {
        fact[++nr]=x;
        numFact[nr]=1;
    }
}

int main()
{
    in>>t;

    while(t--)
    {
        in>>n;
        div_fact(n);

        nrDiv=1;
        sumDiv=1;

        for(int i=1;i<=nr;i++)
            nrDiv*=(numFact[i]+1);

        for(int i=1;i<=nr;i++)
            sumDiv=(long long)(sumDiv * ( ( pow(fact[i],numFact[i]+1)-1 )/(fact[i]-1) ) )%Mod;

        out<<nrDiv<<' '<<sumDiv<<'\n';
    }

    return 0;
}