Cod sursa(job #3234394)

Utilizator razvan242Zoltan Razvan-Daniel razvan242 Data 9 iunie 2024 10:49:28
Problema Suma si numarul divizorilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>

using namespace std;

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

const long long MOD = 9973;

long long power(long long a, long long b) {
    if (b == 0) {
        return 1;
    }
    if (b == 1) {
        return a;
    }

    long long p = power(a, b / 2);
    if (b % 2 == 1) {
        return (((a * p) % MOD) * p) % MOD;
    }
    else {
        return ((p % MOD) * (p % MOD)) % MOD;
    }
}

int main() {
    long long n;
    int queries;
    fin >> queries;
    while (queries--) {
        fin >> n;

        long long divizor = 2;
        int exponent;
        long long nrDivizori = 1;
        long long sumaDivizori = 1;
        while (n > 1) {
            exponent = 0;
            while (n % divizor == 0) {
                ++exponent;
                n /= divizor;
            }
            nrDivizori *= exponent + 1;
            sumaDivizori = (sumaDivizori * (power(divizor, exponent + 1) - 1)) % MOD;
            sumaDivizori = (sumaDivizori * power(divizor - 1, MOD - 2)) % MOD;

            ++divizor;
        }

        fout << nrDivizori << ' ' << sumaDivizori << '\n';
    }
    
    return 0;
}