Cod sursa(job #3166780)

Utilizator SSKMFSS KMF SSKMF Data 9 noiembrie 2023 16:33:38
Problema Suma divizorilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
using namespace std;

ifstream cin ("sumdiv.in");
ofstream cout ("sumdiv.out");

const int mod = 9901;

int Exponentiere (int baza , long long limita)
{
    if (limita == 0)
        { return 0; }

    if (limita & 1)
        { return 1LL * baza * (Exponentiere(baza , limita - 1) + 1) % mod; }

    return 1LL * (baza + 1) * Exponentiere(baza , limita >> 1) % mod;
}

int main ()
{
    int valoare , factor_exponent;
    cin >> valoare >> factor_exponent;

    int suma = 1;
    for (int factor = 2 ; factor * factor <= valoare ; factor++) {
        if (valoare % factor == 0)
        {
            int exponent = 0;
            while (valoare % factor == 0) {
                valoare /= factor;
                exponent++;
            }

            suma = 1LL * suma * (Exponentiere(factor % mod , 1LL * exponent * factor_exponent) + 1) % mod;
        }
    }
    
    if (valoare > 1)
        { suma = 1LL * suma * (Exponentiere(valoare % mod , factor_exponent) + 1) % mod; }

    cout << suma;
    cout.close(); cin.close();
    return 0;
}