Pagini recente » Cod sursa (job #761251) | Cod sursa (job #331630) | Cod sursa (job #2493139) | Cod sursa (job #2345925) | Cod sursa (job #2365575)
#include <bits/stdc++.h>
using namespace std;
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
const int mod = 9901;
#define int long long
int lgpow(int a, int b)
{
if(a % mod == 0)
return 0;
int res = 1;
while(b)
{
if(b & 1)
res = (res * a) % mod;
b >>= 1;
a = (a * a) % mod;
}
return res;
}
int inv(int x)
{
return lgpow(x, mod - 2);
}
main()
{
int a, b;
in >> a >> b;
if(b == 0)
{
out << 1;
return 0;
}
if(a == 0)
{
out << 0;
return 0;
}
if(a == 1)
{
out << 1;
return 0;
}
int s = 1;
int i = 2;
while(a > 1)
{
int nr = 0;
while(a % i == 0)
{
a /= i;
nr++;
}
if(nr)
{
if(i % mod == 1)
{
s *= (b + 1) % mod;
s %= mod;
}
else
{
nr %= mod;
s *= (lgpow(i % mod, nr * b + 1) - 1) % mod;
s %= mod;
s *= inv(i - 1);
s %= mod;
}
}
i++;
if(a > 1 && i * i > a)
i = a;
}
out << s;
}