Pagini recente » Cod sursa (job #2629795) | Cod sursa (job #2141081) | Cod sursa (job #813777) | Cod sursa (job #1400334) | Cod sursa (job #1488017)
#include <fstream>
using namespace std;
const int kMod = 9901;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
int A, B, ans = 1;
int Pow(int base, int p) {
int ans = 1;
while (p) {
if (p & 1)
ans = (ans * base) % kMod;
base = (base * base) % kMod;
p >>= 1;
}
return ans;
}
int Div(int a, int b) {
return (a * Pow(b, kMod - 2)) % kMod;
}
int Minus1(int x) {
return (x - 1 + kMod) % kMod;
}
void Add(int fact, int p) {
if (fact % kMod == 1)
ans = (int64_t(ans) * (p * B + 1)) % kMod;
else
ans = (ans * Div(Minus1(Pow(fact % kMod, p * B + 1)), Minus1(fact))) % kMod;
}
int main() {
fin >> A >> B;
for (int i = 2; i * i <= A; ++i)
if (A % i == 0) {
int pw = 0;
while (A % i == 0) {
A /= i;
++pw;
}
Add(i, pw);
}
if (A > 1)
Add(A, 1);
fout << ans << "\n";
return 0;
}