Cod sursa(job #2982197)

Utilizator pifaDumitru Andrei Denis pifa Data 19 februarie 2023 18:03:27
Problema Suma divizorilor Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <ext/rope>
#include <bits/stdc++.h>

using namespace __gnu_cxx;
using namespace std;

using ll = long long;

ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
ll a, b;
const int MOD = 9901;
ll fastpow(ll base, ll exp)
{
    ll p = 1;
    while(exp)
    {
        if(exp % 2)
            p = p * base % MOD;
        base = base * base % MOD;
        exp /= 2;
    }
    return p % MOD;
}

int main()
{
    in >> a >> b;
    ll ans = 1;
    ll d = 2, p;
    while(a > 1)
    {
        p = 0;
        while(a % d == 0)
        {
            a /= d;
            p++;
        }
        if(p > 0)
        {

            if(d % MOD != 1) {
			p *= b;
            ans = ans * ((fastpow(d % MOD, p + 1) - 1 + MOD) % MOD * fastpow((d - 1) % MOD, MOD - 2) % MOD) % MOD;
			}
            else
                ans = ans * (p + 1) % MOD;
        }
        ++d;
        if(d * d > a)
            d = a;
    }
    out << ans;
    return 0;
}