Cod sursa(job #2932003)

Utilizator Robilika2007Robert Badea Robilika2007 Data 1 noiembrie 2022 15:22:12
Problema Suma divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <iostream>


using namespace std;

#define MOD 9901

int ridicput (int n, int p)
{
    int put = 1;
    while (p > 1)
    {
        if(p % 2 == 1)
            put = (long long)put * n % MOD;
        n = (long long)n * n % MOD;
        p = p / 2;

    }
    return (long long)n * put % MOD;
}


int inversmod (int a)
{
    return ridicput(a, MOD-2);
}


int main()
{
    int a, b, div, put;
    long long Sdiv;

    cin >> a >> b;

    Sdiv = 1;
    div = 2;
    while (a > 1)
    {
        put = 0;
        while(a % div == 0)
        {
            put++;
            a /= div;
        }
        put *= b;
        Sdiv = Sdiv * (ridicput(div, put) - 1) * inversmod(div - 1) % MOD;
    }

    cout << Sdiv;
    return 0;
}