Pagini recente » Cod sursa (job #633633) | Cod sursa (job #2633079) | Cod sursa (job #2562280) | Cod sursa (job #2359892) | Cod sursa (job #2766518)
#include <fstream>
#include <iostream>
using namespace std;
const int MOD = 9901;
int a, b;
void read() {
ifstream f("sumdiv.in");
f >> a >> b;
f.close();
}
int S = 1;
int exp(int a, int b) {
int P = 1;
while (b) {
if (b & 1)
P = (1LL * P * a) % MOD;
a = (1LL * a * a) % MOD;
b /= 2;
}
return P;
}
void solve() {
int d = 2, p;
while (a != 1) {
p = 0;
while (a % d == 0) {
p++;
a /= d;
}
if (d % MOD == 1) S = (1LL * S * (p * b + 1)) % MOD;
else S = (1LL * S * (exp(d, p * b + 1) - 1 + MOD) * exp(d - 1, MOD - 2)) % MOD;
d++;
if (d * d > a && a != 1) {
if (a % MOD == 1) S = (1LL * S * (b + 1)) % MOD;
else S = (1LL * S * (exp(a, b + 1) - 1 + MOD) * exp(a - 1, MOD - 2)) % MOD;
break;
}
}
}
void output() {
ofstream g("sumdiv.out");
g << (a == 0 ? 0 : S);
g.close();
}
int main() {
read();
solve();
output();
return 0;
}