Cod sursa(job #2087488)

Utilizator iDanyelArvat Ovidiu Daniel iDanyel Data 13 decembrie 2017 18:50:19
Problema Suma divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <iostream>
#include <fstream>
#define MOD 9901
using namespace std;

ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");

long long pow(int a, int b)
{
    long long pow_=1, x=a;

    while(b)
    {
        if(b%2!=0)
        {
            pow_=(pow_*x)%MOD;
            b--;
        }

        x=(x*x)%MOD;
        b/=2;
    }

    return pow_%MOD;
}

int main()
{
    int a, b, s=0, i=1;
    fin >> a >> b;

    int n=pow(a,b);

    for(int i=1;i*i<n;i++)
        if(n%i==0)
            s+=i+n/i;

    if(i*i==n)
        s+=i;

    fout << s%MOD;
    return 0;
}