Pagini recente » Cod sursa (job #2557597) | Cod sursa (job #1383748) | Cod sursa (job #1502013) | Cod sursa (job #847266) | Cod sursa (job #467697)
Cod sursa(job #467697)
#include <stdio.h>
#include <math.h>
#define MOD 9901
int a,b,rad,v[7080],i,j,last,p,sol;
int power(int exp)
{
int ret=1,a=i;
while (exp)
{
if (exp & 1)
ret=(ret*a)%MOD;
a=(a*a)%MOD;
exp/=2;
}
return ret;
}
int val(int 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 (val(exp/2)*(1+power(exp/2)))%MOD;
}
int main()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
scanf("%d %d",&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])
{
p=0;
while (a%i==0)
{
a/=i;
++p;
}
sol=sol*(1+val(b*p))%MOD;
}
if (a>1)
{
i=a;
sol=(sol*(1+val(b)))%MOD;
}
printf("%d",sol);
return 0;
}