Pagini recente » Cod sursa (job #1606329) | Cod sursa (job #925365) | Cod sursa (job #2562243) | Cod sursa (job #1159684) | Cod sursa (job #31373)
Cod sursa(job #31373)
#include<math.h>
#include<stdio.h>
long a,b,sir[100000],j,fi,bb[1000],aa[1000],x,y,fact,m,aux,aux2,k;
long functie(long a , long b)
{
int c=0,d=1,n=9901,i;
for(i=1;b;sir[i]=b%2,b/=2,i++);
sir[0]=i-1;
for(i=sir[0];i>0;i--)
{
c*=2;
d=(d*d)%n;
if (sir[i]==1)
{
c++;
d=(d*a)%n;
}
}
return d;
}
int main()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
scanf("%ld %ld",&x,&y);
fact=1;
while(x!=1)
{
fact++;
m=0;
while (x%fact==0) {x/=fact;m++;}
if (m)
{
aa[++aa[0]]=fact;
bb[++bb[0]]=m;
}
if (fact>sqrt(x)) break;
}
if (x!=1)
{
aa[++aa[0]]=x;
bb[++bb[0]]=1;
}
for(j=1;j<=bb[0];j++)
bb[j]*=y;
k=1;
for(j=1;j<=aa[0];j++)
{
aux=functie(aa[j],bb[j]+1);
if (aux==0) aux=9900;
else aux--;
aux2=functie(aa[j]-1,9899);
k*=(aux*aux2)%9901;
}
printf("%ld\n",k);
printf("\n");
return 0;
}