Pagini recente » Cod sursa (job #2692450) | Cod sursa (job #2909937) | Cod sursa (job #3122999) | Cod sursa (job #2766156) | Cod sursa (job #3121708)
#include <bits/stdc++.h>
//#define fin cin
//#define fout cout
#define ull unsigned long long
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
const int MOD = 9901;
ull lgput(ull b, ull e, ull mod) {
ull pow = 1;
b %= mod;
while(e){
if(e & 1)
pow = (pow * b) % mod;
b = (b * b) % mod;
e >>= 1;
}
return pow;
}
ull invmod(ull a, ull mod) {
return lgput(a, mod - 2, mod);
}
int main() {
ull a, b;
fin >> a >> b;
ull sum_div = 1, d = 3, p = 0;
while(!(a & 1)){
a >>= 1;
++p;
}
if(p){
sum_div = sum_div * (lgput(2, b * p + 1, MOD) + MOD - 1) % MOD;
sum_div = sum_div * invmod(1, MOD) % MOD;
}
while(d * d <= a){
p = 0;
while(a % d == 0){
a /= d;
++p;
}
if(p)
sum_div = sum_div * (lgput(d, p * b + 1, MOD) + MOD - 1) % MOD * invmod(d - 1, MOD) % MOD;
d += 2;
}
if(a > 1)
sum_div = sum_div * (lgput(a, 1 * b + 1, MOD) + MOD - 1) % MOD * invmod(a - 1, MOD) % MOD;
fout << sum_div << '\n';
fin.close();
fout.close();
return 0;
}