Pagini recente » Cod sursa (job #3031770) | Cod sursa (job #3272616) | Cod sursa (job #3289784) | Cod sursa (job #208759) | Cod sursa (job #3256305)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
const long long MOD=9901;
long long qpow(long long a, long long b)
{
if(b==0)
return 1;
if(b==1)
return a%MOD;
if(b%2==0)
{
long long aux=qpow(a, b/2);
return (aux*aux)%MOD;
}
else return (a*qpow(a, b-1))%MOD;
}
long long invMod(long long x)
{
return qpow(x, MOD-2);
}
int main()
{
long long x,n;
fin>>x>>n;
if(x==0)
{
fout<<0;
return 0;
}
if(n==0)
{
fout<<1;
return 0;
}
long long d,exp;
long long sum=1;
for(d=2; d*d<=x; d++)
{
if(x%d==0)
{
exp=0;
while(x%d==0)
{
exp++;
x/=d;
}
long long pdiv=qpow(d, (exp*n+1));
sum*=((pdiv-1)%MOD)*invMod(d-1);
sum%=MOD;
}
}
if(x>1)
{
long long pdiv=qpow(x, (n+1));
sum*=((pdiv-1)%MOD)*invMod(x-1);
sum%=MOD;
}
fout<<sum;
return 0;
}