Cod sursa(job #3166776)

Utilizator SSKMFSS KMF SSKMF Data 9 noiembrie 2023 16:30:18
Problema Suma divizorilor Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 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 == 1)
        { return baza; }

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

    return (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 = suma * (Exponentiere(factor % mod , 1LL * exponent * factor_exponent) + 1) % mod;
        }
    }
    
    if (valoare > 1)
        { suma = suma * (Exponentiere(valoare % mod , factor_exponent) + 1) % mod; }

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