Pagini recente » Cod sursa (job #2670750) | Cod sursa (job #1388858) | Cod sursa (job #1895581) | Cod sursa (job #1074109) | Cod sursa (job #550403)
Cod sursa(job #550403)
#include<cstdio>
const int MOD=9901;
int q,nr[1<<17],put[1<<17];
int lgput(int n,int p)
{
int pp,a;
pp=1;
a=n%MOD;
while(p)
{
if(p&1)
{
pp*=(a%MOD);
pp%=MOD;
}
a*=(a%MOD);
a%=MOD;
p>>=1;
}
return pp;
}
void desc(int x)
{
for(int i=2;i*i<=x;i++)
if(x%i==0)
{
int p=0;
while(x%i==0)
p++,x/=i;
++q;
nr[q]=i;
put[q]=p;
}
if(x>1)
{
++q;
nr[q]=x;
put[q]=1;
}
}
int main()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
int a,b;
scanf("%d%d",&a,&b);
desc(a);
for(int i=1;i<=q;i++)
put[i]*=b;
int nrd=1;
for(int i=1;i<=q;i++)
{
if(nr[i]%MOD-1!=0)
nrd*=(((lgput(nr[i],put[i]+1)-1+MOD)%MOD)*lgput((nr[i]%MOD-1+MOD)%MOD,MOD-2))%MOD;
else nrd*=((put[i]+1)%MOD);
nrd%=MOD;
}
printf("%d",nrd);
return 0;
}