Cod sursa(job #3359223)

Utilizator rares89_Dumitriu Rares rares89_ Data 26 iunie 2026 04:20:16
Problema Suma divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");

const int MOD = 9901;

long long a, b;

long long lgput(long long x, long long p) {
    long long r = 1;
    x %= MOD;

    while(p) {
        if(p % 2) r = r * x % MOD;
        x = x * x % MOD;
        p /= 2;
    }

    return r;
}

long long suma(long long p, long long e) {
    if(e == 0) return 1;

    if(e % 2 == 1) {
        return suma(p, e / 2) * (1 + lgput(p, e / 2 + 1)) % MOD;
    }

    return (suma(p, e - 1) + lgput(p, e)) % MOD;
}

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

    if(a == 0) {
        fout << 0 << "\n";
        return 0;
    }

    long long ans = 1;

    for(long long d = 2; d * d <= a; d++) {
        if(a % d == 0) {
            long long cnt = 0;

            while(a % d == 0) {
                a /= d;
                cnt++;
            }

            ans = ans * suma(d, cnt * b) % MOD;
        }
    }

    if(a > 1) {
        ans = ans * suma(a, b) % MOD;
    }

    fout << ans << "\n";

    return 0;
}