Pagini recente » Cod sursa (job #1783092) | Cod sursa (job #1194417) | Cod sursa (job #1221746) | Cod sursa (job #1465376) | Cod sursa (job #2966814)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("gfact.in");
ofstream out ("gfact.out");
#define int long long
vector<pair<int, int>>divs;
bool check (int x)
{
for (int k=0; k<divs.size(); k++)
{
int n = divs[k].first, m = divs[k].second;
int e = 0, p = n;
while (p <= x)
e += x / p, p *= n;
if (e < m)
return false;
}
return true;
}
signed main()
{
int x, y;
in >> x >> y;
int d = 2;
while (d * d <= x)
{
int e = 0;
while (x % d == 0)
x /= d, e++;
if (e)
divs.push_back({d, e*y});
d++;
}
if (x > 1)
divs.push_back({x, y});
int l=1, r=1e18;
while (l < r)
{
int mid = (l + r) / 2;
if (check(mid))
r = mid;
else
l = mid + 1;
}
out << r;
return 0;
}