Pagini recente » Cod sursa (job #2276714) | Cod sursa (job #91168) | Cod sursa (job #223829) | Rating FMI Rusu Razvan Gabriel (razvin92) | Cod sursa (job #3152648)
#include <bits/stdc++.h>
#define limita 45000
using namespace std;
long long p, q;
bool check (unsigned long long val, unsigned long long divisor, unsigned long long exp) {
unsigned long long count, putere;
count = 0;
putere = 1;
while (putere <= val) {
putere *= divisor;
count += val / putere;
}
return (count >= exp);
}
long long binary_search (long long baza, long long exp) {
long long left, right, mid, ans;
left = 1;
right = 1e18;
ans = 0;
while (left <= right) {
mid = (left + right) / 2;
if (check(mid, baza, exp)) {
ans = mid;
right = mid - 1;
} else
left = mid + 1;
}
return ans;
}
int main() {
ifstream cin("gfact.in");
ofstream cout("gfact.out");
long long ans, exp;
cin >> p >> q;
ans = 0;
for (long long baza = 2; baza * baza <= p; baza++) {
exp = 0;
while (p % baza == 0) {
exp++;
p /= baza;
}
if (exp)
ans = max(ans, binary_search(baza, q * exp));
}
if (p > 1)
ans = max(ans, binary_search(p, q));
cout << ans;
return 0;
}