Pagini recente » Cod sursa (job #3215070) | Cod sursa (job #1674199) | Cod sursa (job #2742534) | Cod sursa (job #606615) | Cod sursa (job #3164595)
#pragma message ("??????????")
#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;
base %= MOD;
while (exp) {
if (exp&1) ret = 1LL*ret*base%MOD;
base = 1LL*base*base%MOD;
exp >>= 1;
}
return ret;
}
int sol(int a, int b) {
if (!b) return 1;
//b %= (MOD-1);
int ret = 1;
int d = 2;
for (int d = 2; d*d <= a; d++) {
int exp = 0;
while (a%d==0) {
exp += b;
a /= d;
}
ret *= 1LL*(bin_pow(d,exp+1)-1)*bin_pow(d-1,MOD-2)%MOD;
ret %= MOD;
}
if (a>1) {
ret *= 1LL*(bin_pow(a,b+1)-1)*bin_pow(a-1,MOD-2)%MOD;
ret %= MOD;
}
return ret;
}
int main() {
int a, b;
fin >> a >> b;
fout << sol(a,b) << "\n";
}