Cod sursa(job #3221491)

Utilizator andrei.nNemtisor Andrei andrei.n Data 7 aprilie 2024 11:51:17
Problema Suma si numarul divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
#define MOD 9973

using namespace std;

long long mod_pow(long long x, long long y)
{
    if(y == 0) return 1;
    if(y%2 == 0) return mod_pow(x%MOD*x%MOD, y/2);
    else return mod_pow(x%MOD*x%MOD, y/2) * x % MOD;
}

int main()
{
    ifstream fin ("ssnd.in");
    ofstream fout ("ssnd.out");
    int t; fin>>t;
    while(t--)
    {
        long long n; fin>>n;
        long long d=2,e,nrd=1,sd=1;
        while(n > 1)
        {
            e = 0;
            while(n%d == 0)
            {
                n /= d;
                ++e;
            }
            nrd = nrd * (e+1) % MOD;
            sd = sd * (mod_pow(d,e+1)-1) / (d-1) % MOD;
            d++;
            if(d*d > n) d = n;
        }
        fout<<nrd<<' '<<sd<<'\n';
    }
    return 0;
}