Pagini recente » Cod sursa (job #1148827) | Cod sursa (job #583583) | Profil sandupetrasco | Cod sursa (job #2830048) | Cod sursa (job #3221849)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
const int mod = 9901;
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);
}
static inline int Divi(int a) {
int d = 3;
long long sum = 1;
if(a % 2 == 0) {
int e = 0;
while(a % 2 == 0) {
e++;
a >>= 1;
}
sum = sum * (Put(2, e * b + 1) + mod - 1) % mod;
sum = sum * Inv(2 - 1) % mod;
}
while(d * d <= a) {
int e = 0;
while(a % d == 0) {
e++;
a /= d;
}
if(e) {
if(d % mod == 1) sum = (sum * (e * b + 1)) % mod;
else if(d % mod) {
sum = sum * (Put(d, e * b + 1) + mod - 1) % mod;
sum = sum * Inv(d - 1) % mod;
}
}
d += 2;
}
if(1 < a) {
if(a % mod == 1) sum = (sum * (b + 1)) % mod;
else if(a % mod) {
sum = sum * (Put(a, b + 1) + mod - 1) % mod;
sum = sum * Inv(a - 1) % mod;
}
}
return sum;
}
int main() {
fin >> a >> b;
fout << Divi(a);
return 0;
}