Pagini recente » Monitorul de evaluare | Cod sursa (job #1222341) | Cod sursa (job #3264638) | Cod sursa (job #143252) | Cod sursa (job #3256299)
#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, MOD-2);
}
int main()
{
long long x,n;
fin>>x>>n;
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)*invMod(d-1);
}
}
if(x>1)
{
long long pdiv=qpow(x, (n+1));
sum*=(pdiv-1)*invMod(x-1);
}
fout<<sum;
return 0;
}