Pagini recente » Cod sursa (job #2386796) | Cod sursa (job #2961682) | Cod sursa (job #2908645) | Cod sursa (job #61023) | Cod sursa (job #496185)
Cod sursa(job #496185)
#include<cstdio>
const int R=9901;
const int N=50000001;
const int M=8000000;
int a,b,pr[M],nr;
bool c[N];
void citire()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
scanf("%d%d",&a,&b);
}
void ciur()
{
for (int i=2;i*i<N;++i)
if (!c[i])
for (int j=i*i;j<N;j+=i)
c[i]=true;
for (int i=2;i<N;++i)
if (!c[i])
pr[++nr]=i;
}
inline long long putere(long long a,int n)
{
long long p=1;
while (n!=0)
{
if (n&1!=0)
p*=a;
a*=a;
n>>=1;
}
return p;
}
void calcul()
{
int pow;
long long s=1,p;
for (int i=1;(long long)pr[i]*pr[i]<=a;++i)
{
if (a%pr[i]!=0)
continue;
for (pow=0;a%pr[i]==0;a/=pr[i])
++pow;
p=putere(pr[i],(pow+1)*b);
s*=(long long)(p-1)/(pr[i]-1);
s%=R;
}
if (a!=1)
s*=a+1;
s%=R;
printf("%d\n",(int)s);
}
int main()
{
citire();
ciur();
calcul();
return 0;
}