Cod sursa(job #1250198)

Utilizator sebinechitasebi nechita sebinechita Data 27 octombrie 2014 21:33:45
Problema Suma divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
#define MOD 9901

int pow(int a, int p)
{
    int rez=1;
    while(p)
    {
        if(p&1)
            rez=(a*rez)%MOD;
        a=(a*a)%MOD;
        p>>=1;
    }
    return rez;
}

int fa(int a, int b)
{
    return (((pow(a, b+1)-1+MOD)%MOD)*pow(a-1, MOD-2))%MOD;
}

int main()
{
    int a, b, i, c, s=1;
    fin>>a>>b;
    for(i=2;i*i<=a;i++)
    {
        if(a%i==0)
        {
            c=0;
            while(a%i==0)
            {
                a/=i;
                c++;
            }
            s=(s*fa(i, b*c))%MOD;
        }
    }
    if(a>1)
        s=(s*fa(a, b))%MOD;
    fout << s << endl;
}