Pagini recente » Cod sursa (job #1582790) | Cod sursa (job #203589) | Cod sursa (job #249567) | Cod sursa (job #1221840) | Cod sursa (job #418848)
Cod sursa(job #418848)
#include <cstdio>
#include <cmath>
#define infile "sumdiv.in"
#define outfile "sumdiv.out"
#define MaxN 100000
#define MaxM 1000
#define MODULO 9901
bool a[MaxN];
long long A,B,p,r,K,val,S;
void read()
{
scanf("%lld%lld",&A,&B);
S=1;
}
long long pw(long long val,long long B)
{
long long i,aux=1;
val%=MODULO;
while(B)
{
if(B&1)
aux*=val, aux%=MODULO;
val*=val; val%=MODULO;
B>>=1;
}
return aux;
}
void solve()
{
long long i,n=(long long)sqrt(A);
for(i=2;i<=n;i++)
if(A%i==0)
{
r=0;
while(A%i==0)
{
++r; A/=i;
}
if(i%MODULO==1)
{
S*=(r*B+1);
S%=MODULO;
}
else
S=((S*(pw(i,B*r+1)+MODULO-1)%MODULO)*pw(i-1,MODULO-2))%MODULO;
}
if(A>1)
{
if(i%MODULO==1)
{
S*=(r*B+1);
S%=MODULO;
}
else
{
S=((S*(pw(A,B+1)+MODULO-1)%MODULO)*pw(A-1,MODULO-2))%MODULO;
}
}
}
void write()
{
printf("%lld",S);
}
int main()
{
freopen(infile,"r",stdin);
freopen(outfile,"w",stdout);
read();
if(B>0)
solve();
write();
fclose(stdin);
fclose(stdout);
return 0;
}