Pagini recente » Cod sursa (job #37358) | Cod sursa (job #249850) | Cod sursa (job #222422) | Cod sursa (job #405195) | Cod sursa (job #467705)
Cod sursa(job #467705)
#include <stdio.h>
#include <math.h>
#define MOD 9901
long long a,b,rad,v[7080],i,j,last,p,sol;
inline long long power(long long exp)
{
long long ret=1,a=i;
while (exp)
{
if (exp & 1)
ret=(1LL*ret*a)%MOD;
a=(1LL*a*a)%MOD;
exp>>=1;
}
return ret;
}
long long val(long long exp) //returns ( i + i^2 + i^3 + ... + i^exp ) % MOD
{
if (!exp)
return 0;
if (exp%2)
return (val(exp-1)+power(exp))%MOD;
return (1LL*val(exp/2)*(1+power(exp/2)))%MOD;
}
int main()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
scanf("%lld %lld",&a,&b);
rad=int(sqrt(a));
for (i=2;i<=rad;++i)
if (!v[i])
{
for (j=i;j<=rad/i;++j)
v[j*i]=1;
v[last]=i;
last=i;
}
sol=1;
for (i=2;i;i=v[i])
if (v[i]!=1 && a%i==0)
{
p=0;
while (a%i==0)
{
a/=i;
++p;
}
sol=sol*(1+val(b*p))%MOD;
}
if (a>1)
{
i=a;
sol=(1LL*sol*(1+val(b)))%MOD;
}
printf("%lld",sol);
return 0;
}