Pagini recente » Cod sursa (job #612321) | Cod sursa (job #2592075) | Cod sursa (job #412308) | Borderou de evaluare (job #201318) | Cod sursa (job #607758)
Cod sursa(job #607758)
#include<stdio.h>
long long int a,b,baza[50],expo[50],nf,i,bb,ee,sol=1,p,sc,j;
int main()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
scanf("%lld%lld",&a,&b);
if(!b)
{
printf("1");
return 0;
}
if(a%2==0)
baza[++nf]=2;
while(a%2==0)
{
expo[nf]++;
a/=2;
}
for(i=3;i<8000;i+=2)
if(a%i==0)
{
baza[++nf]=i;
while(a%i==0)
{
expo[nf]++;
a/=i;
}
}
if(a>1)
{
baza[++nf]=a;
expo[nf]=1;
}
for(i=1;i<=nf;i++)
{
bb=baza[i];
ee=expo[i];
ee*=b;
bb%=9901;
if(bb>1)
{
ee%=9900;
if(!ee)
{
sol=0;
return 0;
}
p=1;
sc=1;
for(j=1;j<=ee;j++)
{
p=(p*bb)%9901;
sc+=p;
}
sc%=9901;
sol*=sc;
sol%=9901;
}
if(bb==1)
{
ee++;
ee%=9901;
if(!ee)
{
sol=0;
return 0;
}
sol*=ee;
sol%=9901;
}
}
printf("%lld",sol);
return 0;
}