Pagini recente » Cod sursa (job #2404630) | Cod sursa (job #2377533) | Cod sursa (job #2365374) | Cod sursa (job #1139083) | Cod sursa (job #2593986)
#include <fstream>
using namespace std;
const int MOD = 9901;
long long lgput(long long a, long long b)
{
long long r = 1;
a %= MOD;
while (b)
{
if (b & 1LL)
{
--b;
r *= a;
r %= MOD;
}
else
{
b >>= 1LL;
a *= a;
a %= MOD;
}
}
return r;
}
long long a, b, r, p, d, t1, t2;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
int main()
{
r = 1;
fin >> a >> b;
while ((a & 1LL) == 0)
{
d += b;
a >>= 1LL;
}
if (d)
{
++d;
r = (lgput(2, d) - 1) % MOD;
}
p = 3;
while (a > 1 && p * p <= a)
{
d = 0;
while (a % p == 0)
{
a /= p;
d += b;
}
if (d)
{
++d;
t1 = (lgput(p, d) - 1 + MOD) % MOD;
t2 = lgput(p - 1, MOD - 2);
r = (((r * t1) % MOD) * t2) % MOD;
}
p += 2;
}
if (a > 1)
{
t1 = (lgput(a, b + 1) + MOD - 1) % MOD;
t2 = lgput(a - 1, MOD - 2);
r = (((r * t1) % MOD) * t2) % MOD;
}
fout << r << "\n";
return 0;
}