Pagini recente » Cod sursa (job #54550) | Cod sursa (job #1497540) | Cod sursa (job #1881535) | Cod sursa (job #280869) | Cod sursa (job #1891119)
#include <fstream>
using namespace std;
ifstream cin("sumdiv.in");
ofstream cout("sumdiv.out");
long long n,x,y,exp,i,j,b[105],p[105],rez;
long long lgput(long long n,long long p)
{
long long a,i,sol=1;
a=n;
for(i=0;(1<<i)<=p;i++)
{
if((p&(1<<i))>0)
sol=(sol*a)%9901;
a=(a*a)%9901;
}
return sol;
}
int main()
{
cin>>x>>y;
for(i=2;i*i<=x;i++)
{
exp=0;
while(x%i==0)
{
exp++;
x/=i;
}
if(exp)
{
n++;
b[n]=i;
p[n]=exp;
}
}
if(x>1)
{
n++;
b[n]=x;
p[n]=1;
}
for(i=1;i<=n;i++)
p[i]*=y;
rez=1;
for(i=1;i<=n;i++)
{
if((i==n&&b[i]%9901!=1)||i!=n)
{
rez=(rez*(lgput(b[i],p[i]+1)-1))%9901;
rez=(rez*lgput(b[i]-1,9899))%9901;
}
else
rez=(rez*(p[n]+1))%9901;
}
while(rez<0)
rez+=9901;
cout<<rez;
return 0;
}