Pagini recente » Cod sursa (job #2934982) | Cod sursa (job #1961113) | Cod sursa (job #1228495) | Cod sursa (job #2520858) | Cod sursa (job #3201815)
#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 = 1LL * ans * aux % MOD;
}
aux = 1LL * 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;
if(d%MOD == 1) {
ans = ans * (lgpow(d, cnt*m+1) - 1) % MOD;
} else {
ans = ans * (lgpow(d, cnt*m+1) + MOD - 1) * inv(d-1) % MOD;
}
}
if(n > 1) {
if(n % MOD == 1) {
ans = ans * (lgpow(n, m+1) - 1) % MOD;
} else {
ans = ans * (lgpow(n, m+1) + MOD - 1) * inv(n-1) % MOD;
}
}
out << ans;
return 0;
}