Pagini recente » Cod sursa (job #1823826) | Cod sursa (job #2821636) | Cod sursa (job #3181575) | Cod sursa (job #360571) | Cod sursa (job #2836784)
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream cin("sumdiv.in");
ofstream cout("sumdiv.out");
const int mod = 9901;
auto pow = [&](int b, int e) {
int ans = 1;
while (e) {
if (e & 1)
ans = 1LL * ans * b % mod;
b = 1LL * b * b % mod, e >>= 1;
}
return ans;
};
int ans = 1;
long long a, b;
cin >> a >> b;
vector<pair<int, int>> d;
int p2 = __builtin_ctzll(a);
if (p2)
d.emplace_back(2, 1LL * p2 * (b % (mod - 1)) % (mod - 1));
a >>= p2;
int ub = sqrt(a);
for (int i = 3;i <= ub && a != 1;i += 2) {
int cur = 0;
while (!(a % i))
a /= i, ++cur;
if (cur)
d.emplace_back(i % mod, 1LL * cur * (b % (mod - 1)) % (mod - 1));
}
if (a != 1)
d.emplace_back(a % mod, b);
for (auto x : d) {
if (x.first == 1)
ans = 1LL * ans * (x.second % mod + 1) % mod;
else
ans = 1LL * ans * (pow(x.first, x.second + 1) - 1) % mod * pow(x.first - 1, mod - 2) % mod;
}
cout << ans;
}