Pagini recente » Cod sursa (job #645280) | Cod sursa (job #2156510) | Cod sursa (job #266709) | Cod sursa (job #940496) | Cod sursa (job #2118956)
#include<fstream>
#include<iostream>
#define DN 8005
#define M 9901
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
int a,b,v[DN],r[DN],nr,f,rez=1;
int ve(int a,int b)
{
int c,p,f=1;
while(b)
{
p=1;
c=a;
while(1)
{
if(1LL*2*p>b)
break;
p=2*p;
c=(c*c)%M;
}
b-=p;
f=(f*c)%M;
}
return f;
}
int main()
{
fin>>a>>b;
for(int i=2;i<DN;i++)
if(v[i]==0)
{
nr++;
r[nr]=i;
for(int j=2*i;j<DN;j++)
v[j]=1;
}
for(int i=1;r[i]*r[i]<=a;i++)
if(a%r[i]==0)
{
f=0;
while(a%r[i])
{
f++;
a/=r[i];
}
f=f*b;
rez=(rez*((ve(r[i],f+1)-1+M)%M))%M;
rez=(rez*ve(r[i]-1,M-2))%M;
}
if(a)
{
f=b;
rez=(rez*((ve(a,f+1)-1+M)%M))%M;
rez=(rez*ve(a-1,M-2))%M;
}
fout<<rez;
}