Pagini recente » Cod sursa (job #939043) | Cod sursa (job #3245980) | Cod sursa (job #2347647) | Cod sursa (job #2948296) | Cod sursa (job #3201810)
#include <bits/stdc++.h>
using namespace std;
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
const int MOD = 9901;
int n, m;
int lgpow(int x, int y) {
int aux = x, ans = 1;
for(int bit = 0; (1<<bit) <= y; bit++) {
if((1<<bit) & y) {
ans = ans * aux % MOD;
}
aux = aux * aux % MOD;
}
return ans;
}
int inv(int x) {
if(x <= 1) { return x; }
return MOD - 1LL * MOD/x * inv(MOD%x) % MOD;
}
int main() {
in >> n >> m;
int ans = 1;
for(int d = 2; d * d <= n; d++) {
int cnt = 0;
while(n % d == 0) {
n /= d;
cnt++;
}
if(!cnt) { continue; }
cnt *= m;
ans = ans * (lgpow(d, (cnt+1)*m) - 1)* inv(d-1) % MOD;
}
if(n > 1) {
ans = ans * (lgpow(n, m+1) - 1) * inv(n-1) % MOD;
}
out << ans;
return 0;
}