Pagini recente » Cod sursa (job #1725973) | Cod sursa (job #196831) | Cod sursa (job #1737898) | Cod sursa (job #1142153) | Cod sursa (job #193387)
Cod sursa(job #193387)
#include<stdio.h>
#define N 40005
#define MOD 9901
int v[N];
long long e[N];
int A,B,n,x,y,z,i;
long long r;
long long put(int a,long long b){
long long i,p=a,r=1;
for(i=0;(1<<i)<=b;++i,p=(p*p)%MOD)
if(b&(1<<i))
r=(r*p)%MOD;
return r;
}
long long inv(int a){
return put(a,MOD-2);
}
int main(){
freopen("sumdiv.in", "r", stdin);
freopen("sumdiv.out", "w", stdout);
scanf("%d %d",&A,&B);
if(A==1||B==0){
printf("1\n");
return 0;
}
x=A;n=0;
for(i=2;i*i<=A&&x>1;++i){
if(x%i)
continue;
for(v[n]=i,e[n]=0;x%i==0;x/=i,e[n]++);
e[n]*=B;
++n;
}
if(x>1)
v[n]=x,e[n++]=B;
for(r=1,i=0;i<n;++i){
if((v[i]%MOD)==1){
r=(r*(e[i]+1))%MOD;
continue;
}
x=put(v[i],e[i]+1)-1;
x+=x<0?MOD:0;
y=(v[i]-1)%MOD;
z=(inv(y)*x)%MOD;
r=(r*z)%MOD;
}
printf("%lld\n",r);
return 0;
}