Pagini recente » Cod sursa (job #1391735) | Cod sursa (job #1751605) | Cod sursa (job #1342133) | Cod sursa (job #1249669) | Cod sursa (job #3235278)
#include <fstream>
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
const int MOD = 9901;
int lgpow(int b, int p) {
b %= MOD;
int pow = 1;
while(p){
if(p & 1)
pow = (pow * b) % MOD;
b = (1LL * b * b) % MOD;
p >>= 1;
}
return pow;
}
int invmod(int n) {
return lgpow(n, MOD - 2);
}
int main() {
int a, b;
f >> a >> b;
int rez = 1, d = 3, p = 0;
while(!(a & 1)){
a >>= 1;
p++;
}
if(p) rez = rez * (lgpow(2, b * p + 1) + MOD - 1) % MOD;
while(d * d <= a){
p = 0;
while(a % d == 0){
a /= d;
p++;
}
if(p){
if(d % MOD == 1)
rez = (rez * (p * b + 1)) % MOD;
else if(d % MOD)
rez = rez * (lgpow(d, p * b + 1) + MOD - 1) % MOD * invmod(d - 1) % MOD;
}
d += 2;
}
if(a > 1){
if(a % MOD == 1)
rez = (rez * (1 * b + 1)) % MOD;
else if(a % MOD)
rez = rez * (lgpow(a, 1 * b + 1) + MOD - 1) % MOD * invmod(a - 1) % MOD;
}
g << rez << '\n';
f.close();
g.close();
return 0;
}