Cod sursa(job #1786213)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 22 octombrie 2016 16:39:57
Problema Suma divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<fstream>
#define mod 9901
using namespace std;
long long pd,x,a,b,px,d,fin,i;
long long fct(long p)
{
    long long a;
    if(p==0)
    {
        px=1;
        return 1;
    }
    else
    {
        a=fct((p+1)/2-1);
        a=(a+a*px*x)%mod;
        px=px*px;
        for(i=((p+1)/2-1)*2+1;i<=p;i++)
          px=(px*x)%mod;
        if(p%2==0)
          a=(a+px)%mod;
        return a;
    }
}
void calc()
{
    pd=pd*b;
    x=d%mod;
    fin=(fin*fct(pd))%mod;
}
void solve()
{
    d=2;
    while(d*d<=a)
    {
        pd=0;
        while(a%d==0)
        {
            pd++;
            a/=d;
        }
        calc();
        d++;
    }
    if(a>1)
    {
        pd=b;
        x=a%mod;
        fin=(fin*(fct(pd)))%mod;
    }
    g<<fin;
}
int main()
{
    f>>a>>b;
    fin=1;
    solve();
    return 0;
}