Pagini recente » Cod sursa (job #1032925) | Cod sursa (job #2801736) | Cod sursa (job #2286650) | Cod sursa (job #2144913) | Cod sursa (job #194119)
Cod sursa(job #194119)
#include <stdio.h>
long long n,x,y,i,j,a[10],b[10];
long long s,s2,z;
long long log(long long x, long long y)
{
long long t=1;
for (int k=y; k>0; k/=2)
{
if (k%2==1) t=(t*x)%9901;
x=(x*x)%9901;
}
return t;
}
int main()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
scanf("%lld%lld",&x,&y);
if (x==1 || y==0) printf("1\n");
if (y==1) printf("%d",x%9901);
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;
z=(log(a[i],b[i])*a[i]-1)%9901;
if (z<0) z=1;
z=(z*log(a[i]-1,9901-2))%9901;
if (z==0) z=1;
s=(s*z)%9901;
}
printf("%lld\n",s);
return 0;
}