Cod sursa(job #757141)

Utilizator misinozzz zzz misino Data 11 iunie 2012 10:05:07
Problema Suma divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
long long   s=1,i,b,a,a1,a2,e;
long long putere(long long n,long long p)
{long long x=1,q,nr;
q=p;
nr=n;
while(p)
{if(p&1)
x=(x*nr)%9901;
nr=(nr*nr)%9901;
p/=2;
}
p=q;
return x;
}
int main()
{f>>a>>b;
for(i=2;i*i<=a;++i)
if(a%i==0)
{e=0;
while(a%i==0)
{++e;
a=a/i;
}
e=e*b;
if(i%9901==1)
s=s*(e+1)%9901;
else
{a1=(putere(i,e+1)+9900)%9901;
a2=(putere(i-1,9901-2))%9901;
s=((((s)%9901)*a1)%9901*a2)%9901;
}
}
if(a!=1)
{if(a%9901==1)
s=(s*(b%9901+1))%9901;
else
{a1=(putere(a,b%9901+1)+9900)%9901;
a2=(putere(a-1,9899))%9901;
s=((((s)%9901)*a1)%9901*a2)%9901;
}}
g<<s<<'\n';
return 0;
}