Pagini recente » Cod sursa (job #2203873) | Cod sursa (job #3270325) | Cod sursa (job #2805097) | Cod sursa (job #3179220) | Cod sursa (job #2982183)
#include <ext/rope>
#include <bits/stdc++.h>
using namespace __gnu_cxx;
using namespace std;
using ll = long long;
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
ll a, b;
const int MOD = 1e9 + 7;
ll fastpow(ll base, ll exp)
{
ll p = 1;
while(exp)
{
if(exp % 2)
p = p * base % MOD;
base = base * base % MOD;
exp /= 2;
}
return p % MOD;
}
int main()
{
in >> a >> b;
ll ans = 1;
ll d = 2, p;
while(a > 1)
{
p = 0;
while(a % d == 0)
{
a /= d;
++p;
}
if(p > 0)
{
p *= b;
ans = ans * ((fastpow(d % MOD, p + 1) - 1 + MOD) % MOD * fastpow((d - 1) % MOD, MOD - 2) % MOD) % MOD;
}
++d;
if(d * d > a && a > 1)
{
d = a;
}
}
out << ans % MOD;
return 0;
}