Cod sursa(job #3215488)

Utilizator YuzukyIstrate Andreea Ruxandra Yuzuky Data 15 martie 2024 01:30:55
Problema Suma divizorilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
const int MOD = 9901;
long long putere (long long nr, long long exp, int mod)
{
    if(exp==0)
        return 1;
    else
    {
        long long p = putere(nr, exp/2, mod);
        if(exp%2==0)
            return p*p%mod;
        else
            return p*p%mod*nr%mod;
    }
}
int main()
{
    int a,b;
    in>>a>>b;
    long long n=putere(a, b, MOD), s=1; //s - suma divizorilor
    for(int d=2; d*d<=n; ++d)
    {
        int power=d;
        while(n%d==0)
        {
            power=power*d;
            n/=d;
        }
        s=s*(power-1)/(d-1);
        s=s%MOD;
    }
    if(n>1)
        s=s*(n*n-1)/(n-1);
    s=s%MOD;
    out<<s;
    return 0;
}