Cod sursa(job #3305679)

Utilizator Gabriel_DaescuDaescu Gabriel Florin Gabriel_Daescu Data 3 august 2025 23:58:41
Problema Suma divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 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;

    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)%MOD;
            inv=fast_exp(d-1,MOD-2);
            s=((s*p)%MOD*inv)%MOD;
        }

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

    fout<< s << "\n";

    return 0;
}