Cod sursa(job #2855634)

Utilizator norryna07Alexandru Norina norryna07 Data 22 februarie 2022 18:18:05
Problema Suma si numarul divizorilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#define mod 9973
using namespace std;

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

long long nr_div(long long n)
{
    long long nr=1, d=2, ct;
    while (n!=1)
    {
        ct=0;
        while (n%d==0) n/=d, ct++;
        if (ct>0) nr=nr*(ct+1);
        if (d*d<n) d++;
        else d=n;
    }
    return nr;
}

int sum_div(long long n)
{
    long long d=2, ct;
    long long p;
    int sum=1;
    while (n!=1)
    {
        ct=0; p=1;
        while (n%d==0) n/=d, ct++, p*=d;
        if (ct>0) sum = (((p*d-1)/(d-1))%mod*sum)%mod;
        if (d*d<n) d++;
        else d=n;
    }
    return sum;
}

int main()
{
    int n, x;
    fin>>n;
    for (int i=1; i<=n; ++i)
    {
        fin>>x;
        fout<<nr_div(x)<<' '<<sum_div(x)<<'\n';
    }
}