Pagini recente » Cod sursa (job #1772948) | Istoria paginii runda/hc_round4 | Cod sursa (job #2005569) | Cod sursa (job #2005877) | Cod sursa (job #2877918)
#include <fstream>
using namespace std;
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
const int MOD = 9901;
int powlg(int x, int m, int mod){
int val = 1;
while(m > 0) {
if(m & 1)
val = 1LL * val * x % mod;
x = 1LL * x * x % mod;
m >>= 1;
}
return val;
}
inline int inv(int n){
return powlg(n, MOD - 2, MOD);
}
int main(){
int a, b, p = 1;
in >> a >> b;
if(a % 2 == 0) {
int ex = 0;
while(a % 2 == 0) {
ex++;
a /= 2;
}
ex *= b;
p = (p * (powlg(2, ex + 1, MOD) - 1) % MOD) % MOD;
}
for(int i = 3; i * i <= a; i += 2) {
if(a % i == 0) {
int ex = 0;
while(a % i == 0) {
ex++;
a /= i;
}
ex *= b;
p = (p * (powlg(i, ex + 1, MOD) - 1) % MOD * inv(i - 1)) % MOD;
}
}
if(a > 1)
p = (p * (powlg(a, b + 1, MOD) - 1) % MOD * inv(a - 1)) % MOD;
out << p;
return 0;
}