Pagini recente » Borderou de evaluare (job #1569551) | Borderou de evaluare (job #1824562) | Cod sursa (job #2738023) | Borderou de evaluare (job #1792624) | Cod sursa (job #3235710)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
const int mod = 9901;
long long r = 1;
int a, b;
static inline int Put(int a, int n) {
int p = 1;
while(n) {
if(n & 1) p = (p * a) % mod;
a = (a * a) % mod;
n >>= 1;
}
return p;
}
static inline int Inv(int a) {
return Put(a, mod - 2);
}
int main() {
fin >> a >> b;
int d = 2;
while(d * d <= a) {
int e = 0;
while(a % d == 0) {
e++;
a /= d;
}
if(e) {
r = (r * ((Put(a, e * b + 1) - 1 + mod) % mod)) % mod;
r = (r * Inv(d + 1)) % mod;
}
d++;
}
if(a > 1) {
r = (r * ((Put(a, 1 * b + 1) - 1 + mod) % mod)) % mod;
r = (r * Inv(a - 1)) % mod;
}
fout << r;
return 0;
}