Pagini recente » Cod sursa (job #3204379) | Cod sursa (job #2857285) | Cod sursa (job #1246892) | Cod sursa (job #1723106) | Cod sursa (job #181475)
Cod sursa(job #181475)
#include <stdio.h>
#include <math.h>
long a,b,r,i,p,q,sol;
long div[1000],d[1000],k[1000];
long power(long b, long p){
long rez=1;
while (p){
if ((long)(p&1))rez=(rez*b)%9901;
p>>=1;
b=(b*b)%9901;
}
return rez;
}
long sp(long b,long p){
if (p==0)return 1;
if ((long)(p&1))
return sp(b,p>>1)*(power(b,(p>>1)+1)+1)%9901;
return (sp(b,p-1)+power(b,p))%9901;
}
int main(){
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
scanf("%ld %ld",&a,&b);
r=sqrt(a);
for (i=1;i<=r;++i)
if (a%i==0)
div[++q]=i;
for (i=q;i;--i)
div[q+q-i+1]=a/div[i];
q+=q;
for (i=2;i<=q;i++)
if (a%div[i]==0){
if (div[i]==1)continue;
d[++p]=div[i];
while (a%div[i]==0){
k[p]++;
a/=div[i];
}
}
sol=1;
for (i=1;i<=p;++i){
sol*=sp(d[i],k[i]*b);
sol%=9901;
}
printf("%ld\n",sol);
return 0;
}