Pagini recente » Cod sursa (job #512266) | Cod sursa (job #2527910) | Cod sursa (job #945075) | Cod sursa (job #1152702) | Cod sursa (job #3234102)
#include <bits/stdc++.h>
#define pb push_back
#define ll long long
#define NMAX 100005
using namespace std;
ll p, q;
vector<pair<ll, ll>> d;
bool f(ll x) {
ll s = 0;
for (auto i: d) {
ll a = i.first;
while (a <= x) {
s += x / a;
a *= i.first;
}
if (s < i.second * q)
return false;
}
return true;
}
int main() {
ifstream cin("gfact.in");
ofstream cout("gfact.out");
ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
cin >> p >> q;
ll x = p;
if (x % 2 == 0) {
ll c = 0;
while (x % 2 == 0) {
x /= p;
c++;
}
d.pb({2, c});
}
for (ll i = 3; i * i <= p; i += 2) {
ll power = 0;
if (x % i == 0) {
while (x % i == 0) {
x /= i;
power++;
}
d.pb({i, power});
}
}
if (x != 1)
d.pb({x, 1});
ll st = 1, dr = 60000000000000, r;
while (st <= dr) {
ll mid = (st + dr) / 2;
if (f(mid))
dr = mid - 1, r = mid;
else
st = mid + 1;
}
cout << r;
return 0;
}