Cod sursa(job #3319653)

Utilizator gicaviitorulgica viitorul gicaviitorul Data 2 noiembrie 2025 13:14:47
Problema Suma divizorilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <bits/stdc++.h>
using namespace std;

#define int unsigned long long
const int MOD = 9901;

int expmod(int a, int k)
{
    int p = 1;
    while (k > 0)
    {
        if (k % 2 == 1)
        {
            p *= a;
            p %= MOD;
        }
        a *= a;
        a %= MOD;
        k /= 2;
    }
    return p;
}

int inv_mod(int a)
{
    return expmod(a, MOD - 2);
}

int sumdiv(int n)
{
    int divv = 2, put = 0, allput = 1;
    while (n > 1)
    {
        while (n % divv == 0)
        {
            n /= divv;
            put ++;
        }
        if (put > 0)
        {
            allput *= (expmod(divv, put + 1) - 1) * inv_mod(divv - 1);
            allput %= MOD;
        }
        divv ++;
        put = 0;
        if (divv * divv > n)
            divv = n;
    }
    return allput;
}

signed main() 
{
    ifstream cin("sumdiv.in");
    ofstream cout("sumdiv.out");
    int a, b; cin >> a >> b;
    int c = expmod(a, b);
    cout << sumdiv(c);
}