Cod sursa(job #2852891)

Utilizator rares89_Dumitriu Rares rares89_ Data 19 februarie 2022 17:48:00
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <bits/stdc++.h>
#define MOD 9973

using namespace std;

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

long long int putere(long long int a, int n) {
    long long int res = 1LL;
    while(n > 0) {
        if(n % 2 == 1) {
            res = (res * a) % MOD;
        }
        a = (a * a) % MOD;
        n /= 2;
    }
    return res;
}

int t;
long long int n;

int main() {
    fin >> t;
    while(t > 0) {
        fin >> n;
        long long int ans1 = 1LL, ans2 = 1LL;
        long long int m = n, d = 2LL;
        while(m > 1) {
            int p = 0;
            while(m % d == 0) {
                p++;
                m /= d;
            }
            if(p > 0) {
                ans1 = (ans1 * ((p + 1) % MOD)) % MOD;
                ans2 = (ans2 * (putere(d, p + 1) - 1) * putere(d - 1, MOD - 2)) % MOD;
            }
            d++;
            if(d * d > m) {
                d = m;
            }
        }
        fout << ans1 <<  " " << ans2 << "\n";
        t--;
    }
    fin.close();
    return 0;
}