Pagini recente » Cod sursa (job #1164443) | Cod sursa (job #50142) | Cod sursa (job #184339) | Cod sursa (job #2537642) | Cod sursa (job #1479965)
#include<fstream>
using namespace std;
#define LL long long
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
#define MOD 9901
LL a,b,p,sol=1;
LL cmmdc(LL A, LL B, LL &X, LL &Y)
{
LL X0,Y0;
if (!B)
{
X=1, Y=0;
return A;
}
LL D=cmmdc(B,A%B,X0,Y0);
X=Y0, Y=X0-(A/B)*Y0;
return D;
}
LL pow(LL N, LL K)
{
LL s=1;
while (K)
{
if (K&1) s=(s*N)%MOD;
N=(N*N)%MOD, K>>=1;
}
return s;
}
int main()
{
LL d;
fin>>a>>b;
for (d=2;d*d<=a;++d)
if (a%d==0)
{
p=0;
while (a%d==0) ++p, a/=d;
if (d%MOD==1) sol*=(b*p+1), sol%=MOD;
else
{
LL x,y;
sol*=pow(d,b*p+1)-1, sol%=MOD;
cmmdc(d-1,MOD,x,y);
sol=(sol*x)%MOD, sol=(sol+MOD)%MOD;
}
}
if (a>1)
{
if (a%MOD==1) sol*=(b+1), sol%=MOD;
else
{
LL x,y;
sol*=pow(a,b+1)-1, sol%=MOD;
cmmdc(a-1,MOD,x,y);
sol=(sol*x)%MOD, sol=(sol+MOD)%MOD;
}
}
fout<<sol<<"\n";
return 0;
}