Cod sursa(job #3235710)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 20 iunie 2024 17:58:41
Problema Suma divizorilor Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
const int mod = 9901;
long long r = 1;
int a, b;

static inline int Put(int a, int n) {
    int p = 1;
    while(n) {
        if(n & 1) p = (p * a) % mod;
        a = (a * a) % mod;
        n >>= 1;
    }
    return p;
}

static inline int Inv(int a) {
    return Put(a, mod - 2);
}

int main() {
    fin >> a >> b;

    int d = 2;
    while(d * d <= a) {
        int e = 0;
        while(a % d == 0) {
            e++;
            a /= d;
        }

        if(e) {
            r = (r * ((Put(a, e * b + 1) - 1 + mod) % mod)) % mod;
            r = (r * Inv(d + 1)) % mod;
        }

        d++;
    }
    if(a > 1) {
        r = (r * ((Put(a, 1 * b + 1) - 1 + mod) % mod)) % mod;
        r = (r * Inv(a - 1)) % mod;
    }

    fout << r;

    return 0;
}