Pagini recente » Cod sursa (job #1910500) | Borderou de evaluare (job #1102912) | Cod sursa (job #1144510) | Cod sursa (job #1910266) | Cod sursa (job #1387786)
#include<fstream>
#include<math.h>
#define nmax 8002
using namespace std;
int ciur[nmax];
long long a,b,db[nmax],diviz[nmax],s,j,y,i,p;
int main ()
{
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
ciur[1]=1;
fin>>a>>b;
if(a>1)
{
y=sqrt(a)+1;
for(i=2;i*i<=y;i++)
{
if(ciur[i]==0)
{
for(j=i*i;j<=y;j=j+i)
{
ciur[j]=1;
}
}
}
for(i=2;i<=y;i++)
{
if(ciur[i]==0)
{
while(a%i==0)
{
diviz[i]=diviz[i]+1;
a=a/i;
}
}
}
s=1;
for(i=2;i<=y;i++)
{
if(diviz[i]!=0)
{
diviz[i]=diviz[i]*b;
db[i]=1;
while(diviz[i]+1!=0)
{
db[i]=(db[i]*i)%9901;
diviz[i]=diviz[i]-1;
}
p=1;
while(p*(i-1)%9901!=1)
{
p++;
}
s=s*(db[i]-1)*p;
s=s%9901;
}
}
if(a!=1)
{
j=1;
while(b+1!=0)
{
j=(j*a)%9901;
b--;
}
p=1;
while(p*(a-1)%9901!=1)
{
p++;
}
s=s*(j-1)*p;
s=s%9901;
}
fout<<s;
}
else
{
fout<<a;
}
fin.close();
fout.close();
return 0;
}