Pagini recente » Istoria paginii utilizator/duyboy135 | Cod sursa (job #1356491) | Cod sursa (job #134556) | Cod sursa (job #555092) | Cod sursa (job #3150606)
#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>0) {
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;
while (a>1) {
int exp = 0;
while (a%d==0) {
exp += b;
a /= d;
exp %= (MOD-1);
}
ret *= (bin_pow(d,exp+1)-1)*bin_pow(d-1,MOD-2)%MOD;
ret %= MOD;
if (1LL*d*d>a) d = a;
}
return ret;
}
int main() {
int a, b;
fin >> a >> b;
fout << sol(a,b) << "\n";
}