Cod sursa(job #2467843)

Utilizator tomaionutIDorando tomaionut Data 5 octombrie 2019 09:20:12
Problema Suma si numarul divizorilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>
#define Mod 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");

int LogP(int a, int n)
{
    int p;
    for (p=1; n>0; n/=2)
       {
        if (n%2==1)
        p=p*a%Mod;
        a=a*a%Mod;
       }
       return p;


}
void Descomp(int n)
{
    int p,e,nrdiv=1,sumdiv=1;
    for (p=2; p*p<=n and n>1; p++)
        if (n%p==0)
    {
        e=0;
        while (n%p==0)
        {
            e++;
            n/=p;
        }
        nrdiv*=(e+1);
        sumdiv=1ll * sumdiv * (LogP(p,e+1)-1+Mod)*LogP(p-1,9971)%Mod;
    }
    if (n>1)
    {
        nrdiv*=2;
        sumdiv=1ll*sumdiv*(n*n-1+Mod) * LogP(n-1,9971)%Mod;
    }
    fout << nrdiv << " " << sumdiv << "\n";
}

int main()
{
    int t,n,i,x;
    fin >> t;
    for (i=1; i<=t; i++)
    {
        fin >> x;
        Descomp(x);
    }





    return 0;
}