Cod sursa(job #2932052)

Utilizator Robilika2007Robert Badea Robilika2007 Data 1 noiembrie 2022 18:59:57
Problema Suma divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>

using namespace std;

#define MOD 9901

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

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, ca, cb;
    long long Sdiv;

    cin >> a >> b; ca=a; cb=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;
       // Sdiv = Sdiv * ( (ridicput(div, put) - 1) / (div - 1) ); //% MOD;
        div++;
    }

    Sdiv += ridicput(ca, cb);
    Sdiv %= MOD;

    cout << Sdiv;
    return 0;
}