Cod sursa(job #3305682)

Utilizator Gabriel_DaescuDaescu Gabriel Florin Gabriel_Daescu Data 4 august 2025 00:06:07
Problema Suma divizorilor Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
#define NMAX 100000
#define MOD 9901
using namespace std;
ifstream  fin("sumdiv.in");
ofstream fout("sumdiv.out");
long long A,B,s;

long long fast_exp(long long baza, long long exp)
{
    long long ans=1;
    while(exp>0)
    {
        if(exp%2==1)
        {
            ans=(ans*baza)%MOD;
        }
        baza=(baza*baza)%MOD;
        exp=exp/2;
    }

    return ans%MOD;
}

int main()
{
    fin>>A>>B;

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

    long long d,e;
    s=1;
    d=2;

    while(A>1)
    {
        e=0;
        while(A%d==0)
        {
            A=A/d;
            e++;
        }

        if(e)
        {
            long long p,inv;
            p=fast_exp(d,e*B+1)-1;
            if(p<0)
            {
                p+=MOD;
            }
            inv=fast_exp(d-1,MOD-2);
            s=((s*p)%MOD*inv)%MOD;
        }

        if(d>2)
        {
            d+=2;
        }
        else
        {
            d++;
        }

        if(d*d>A && A>1)
        {
            d=A;
        }
    }

    fout<< s << "\n";

    return 0;
}