Pagini recente » Cod sursa (job #1517488) | Cod sursa (job #1738700) | Cod sursa (job #1633640) | Cod sursa (job #507364) | Cod sursa (job #3150598)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <utility>
#include <algorithm>
std::ifstream fin("sumdiv.in");
std::ofstream fout("sumdiv.out");
const int MOD = 9901;
int bin_pow(int base, int exp) {
int ret = 1;
while (exp) {
if (exp&1) {
ret *= base;
ret %= MOD;
}
base *= base;
base %= MOD;
exp >>= 1;
}
return ret;
}
int sol(int a, int b) {
if (!b) return 1;
int ret = 1;
int d = 2;
while (a>1) {
int exp = 0;
while (a%d==0) {
exp += b;
a /= d;
}
ret *= (bin_pow(d,exp+1)-1)/(d-1);
ret %= MOD;
if (d*d>a) d = a;
}
return ret;
}
int main() {
int a, b;
fin >> a >> b;
fout << sol(a,b) << "\n";
}