Pagini recente » Cod sursa (job #954673) | Cod sursa (job #1242439) | Cod sursa (job #2422553) | Cod sursa (job #571547) | Cod sursa (job #3225804)
#include <bits/stdc++.h>
///#include <ext/pb_ds/assoc_container.hpp>
#define fi first
#define se second
#define int unsigned long long
#define sz(a) int((a).size())
#define all(a) (a).begin(), (a).end()
#define lsb(x) (x & (-x))
#define YES { fout << "DA" << endl; return; }
#define NO { fout << "NU" << endl; return; }
using ll = long long;
using pii = std::pair<int, int>;
const int MOD = 1e9 + 7;
using namespace std;
///using namespace __gnu_pbds;
ifstream fin ("sumdiv.in");
ofstream fout ("sumdiv.out");
int A, B, ans = 1;
int lgpow(int base, int exp) {
int ans = 1;
while (exp) {
if (exp & 1)
ans = (ans * base) % MOD;
base = (base * base) % MOD;
exp >>= 1;
}
return ans;
}
signed main() {
fin >> A >> B;
for (int i = 2; i <= A; ++i) {
if (i * i > A)
i = A;
if (A % i)continue;
// cout << i << " ";
int cnt = 0;
while (A % i == 0) {
++cnt;
A /= i;
}
// cout << cnt;
cnt *= B;
int p1 = (lgpow(i % MOD, cnt + 1) - 1 + MOD) % MOD;
int p2 = lgpow((i - 1) % MOD, MOD - 2) % MOD;
cout << p2 << " " ;
if (i % MOD == 1)
p1 = 1, p2 = (B + 1) % MOD;
ans = (((ans * p1) % MOD) * p2) % MOD;
}
cout << (lgpow(2, 39 * B + 1) - 1) % MOD << " ";
cout << LONG_LONG_MAX;
fout << ans;
return 0;
}