Pagini recente » Cod sursa (job #1936372) | Cod sursa (job #868544) | Cod sursa (job #200558) | Cod sursa (job #2016715) | Cod sursa (job #2078512)
#include <fstream>
using namespace std;
ifstream cin("sumdiv.in");
ofstream cout("sumdiv.out");
const int MOD = 9901;
int Raise(long long a, int p) {
long long ans = 1;
while (p) {
if (p & 1) {
ans *= a;
a %= MOD;
}
a = (a * a) % MOD;
p >>= 1;
}
return ans;
}
void Inv_mod(int a, int b, int &x, int &y) {
if (not b) {
x = 1;
y = 0;
return;
}
int x0, y0;
Inv_mod(b, a % b, x0, y0);
x = y0;
y = x0 - (a / b) * y0;
}
void Solve(int a, int b) {
long long s = 1ll;
for (int i = 2; i * i <= a; i ++) {
if (a % i) {
continue;
}
int cur_exp = 0;
while (a % i == 0) {
a /= i;
cur_exp ++;
}
cur_exp *= b;
if (i % MOD == 1) {
s = s * ((cur_exp + 1)) % MOD;
}
else {
long long cur_nr = Raise(i, cur_exp + 1);
int x, y;
Inv_mod(i - 1, MOD, x, y);
while (x < 0) {
x += MOD;
}
s = (s * (cur_nr - 1) * x) % MOD;
}
}
if (a != 1) {
if (a % MOD == 1) {
s = (s * (b + 1)) % MOD;
}
else {
long long cur_nr = Raise(a, b + 1);
int x, y;
Inv_mod(a - 1, MOD, x, y);
while (x < 0) {
x += MOD;
}
s = (s * (cur_nr - 1) * x) % MOD;
}
}
cout << s << '\n';
}
int main(int argc, char const *argv[]) {
int a, b;
cin >> a >> b;
Solve(a, b);
}