Pagini recente » Istoria paginii utilizator/cojocariualexandru | Cod sursa (job #2144258) | Cod sursa (job #1640247) | Profil gigiibirjo | Cod sursa (job #1963418)
#include <bits/stdc++.h>
const int MOD = 9901;
int LgPut(int x, int b)
{
int a = 1;
while(b)
{
if(b%2) a=(1LL*a*x)%MOD;
x=(1LL*x*x)%MOD;
b/=2;
}
return a;
}
int Compute(int a, int b)
{
if(!b)
return 1;
if(b % 2 == 0)
return (1LL * Compute(a,b-1) * a + 1) % MOD;
return (Compute(a,b/2) * (1 + LgPut(a,b/2+1))) % MOD;
}
int main()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
int i,a,b,res=1,nr=0;
scanf("%d %d",&a,&b);
if(!a)
{
printf("0\n");
return 0;
}
for(i = 2; i * i <= a; ++i)
if(a % i == 0)
{
nr = 0;
while(a % i == 0)
{
a /= i;
++nr;
}
res = (res * Compute(i,nr*b)) % MOD;
}
if(a > 1) res = (res * Compute(a,b)) % MOD;
printf("%d\n",res);
return 0;
}