Cod sursa(job #3221483)

Utilizator andrei.nNemtisor Andrei andrei.n Data 7 aprilie 2024 11:38:13
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 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) % MOD * mod_pow(d-1,MOD-2) % MOD;
            d++;
            if(d*d > n) d = n;
        }
        fout<<nrd<<' '<<sd<<'\n';
    }
    return 0;
}