Pagini recente » Cod sursa (job #1133075) | Cod sursa (job #307934) | Cod sursa (job #558759) | Cod sursa (job #1666409) | Cod sursa (job #194092)
Cod sursa(job #194092)
#include <stdio.h>
int n,x,y,i,j,a[10000],b[10000];
long long s,s2;
long long proc(int q,int k)
{
if (k==0) return 1;
if (k==1) return a[q];
if (k%2)
{
long long r=proc(q,k-1)%9901;
return (a[q]*r)%9901;
}
long long r=proc(q,k/2);
return (r*r)%9901;
}
int main()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
scanf("%d%d",&x,&y);
for (i=2; i*i<=x; ++i)
{
if (x%i) continue;
a[++n]=i;
while (x%i==0) { x/=i; ++b[n]; }
}
if (x>1) { a[++n]=x; b[n]=1; }
s=1;
for (i=1; i<=n; ++i)
{
b[i]*=y;
s=s*(((proc(i,b[i])*a[i]-1)%9901)/(a[i]-1))%9901;
}
printf("%lld",s);
return 0;
}