Cod sursa(job #2118666)

Utilizator AlexTheDagonBogdan Tudor AlexTheDagon Data 30 ianuarie 2018 20:50:30
Problema Suma divizorilor Scor 0
Compilator cpp Status done
Runda simulare_plicti Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <math.h>
#define prim 9901
using namespace std;
ifstream in("sumadiv.in");
ofstream out("sumadiv.out");
int  a,b,aux,d,e,r=1;
int  lgput(int  baza,int  exp)
{
    int  rez=1;
    while(exp)
    {
        if(exp&1)rez*=baza;
        baza*=baza;
        baza%=prim;
        rez%=prim;
        exp>>=1;
    }
    return rez;
}
int main()
{
    in>>a>>b;
    for(d=2;d*d<=a && d>1;++d)
    {
        e=0;
        while(a%d==0)
        {
            a/=d;
            ++e;
        }
        if(e!=0)
        {
            aux=(lgput(d,e*b+1)-1)%prim;
            if(aux<0)aux+=prim;
            r=r*aux;
            r%=prim;
            r=r*lgput(d-1,prim-2);
            r%=prim;
        }
    }
    if(a>1)
    {
        aux=(lgput(a,b+1)-1);
        if(aux<0)aux+=prim;
        r=r*aux;
        r%=prim;
        r=r*lgput(a-1,prim-2);
        r%=prim;
    }
    out<<r;
    return 0;
}