Pagini recente » Cod sursa (job #955919) | Cod sursa (job #1403772) | Cod sursa (job #1550397) | Cod sursa (job #96233) | Cod sursa (job #712682)
Cod sursa(job #712682)
#include <cstdio>
#include <fstream>
using namespace std;
const int m=9901;
int a,b,sol=1;
void read ()
{
ifstream in ("sumdiv.in");
in>>a>>b;
}
inline int lgp (int x,int y)
{
int r=1;
x%=m;
for(;y;y>>=1)
{
if(y&1)
r=(r*x)%m;
x=(x*x)%m;
}
return r;
}
inline int sm (int a,int b)
{
if(b==1)
return a%m;
if(b&1)
return (sm(a,b-1)+lgp(a,b))%m;
return ((lgp(a,b>>1)+1)*sm(a,b>>1))%m;
}
void solve ()
{
if(b==0)
return;
for(int c,i=2;i*i<=a;++i)
if(!(a%i))
{
for(c=0;!(a%i);++c)
a/=i;
sol=(sol*(sm(i,c*b)+1)%m)%m;
}
if(a>1)
sol=(sol*(sm(a,b)+1)%m)%m;
}
void out ()
{
freopen ("sumdiv.out","w",stdout);
printf("%d",sol);
}
int main ()
{
read ();
solve ();
out ();
return 0;
}