Pagini recente » Profil Djok | Cod sursa (job #860741) | Cod sursa (job #2094208) | Cod sursa (job #2527239) | Cod sursa (job #3248844)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
const long long mod = 1e9 + 7;
long long a, b, d, r;
static inline long long Put(long long a, long long n) {
long long p = 1;
a %= mod;
while(n) {
if(n & 1) p = (p * a) % mod;
a = (a * a) % mod;
n >>= 1;
}
return p;
}
static inline long long Inv(long long a) {
return Put(a, mod - 2);
}
int main() {
fin >> a >> b;
r = 1;
d = 2;
while(d * d <= a) {
if(a % d == 0) {
long long e = 0;
while(a % d == 0) {
e++;
a /= d;
}
if(d % mod == 1) r = (r * (e * b + 1)) % mod;
else if(d % mod > 1) r = (r * (Put(d, e * b + 1) + mod - 1) % mod * Inv(d - 1)) % mod;
}
d++;
}
if(a > 1) {
if(a % mod == 1) r = (r * (1 * b + 1)) % mod;
else if(a % mod > 1) r = (r * (Put(a, 1 * b + 1) + mod - 1) % mod * Inv(a - 1)) % mod;
}
fout << r;
return 0;
}