Pagini recente » Cod sursa (job #525735) | Cod sursa (job #2701133) | Cod sursa (job #2266281) | Cod sursa (job #380374) | Cod sursa (job #2924726)
#include <fstream>
using namespace std;
#define Nmax 44721
bool ciur[Nmax];
bool esteSolutie(int n, int p, int q)
{
int cnt;
cnt = 0;
while(n / p > 0)
{
cnt += n / p;
n /= p;
}
return cnt >= q;
}
int main()
{
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int p, q, i, j, divprimmax, l, r, mid, sol;
fin >> p >> q;
divprimmax = 1;
for(i = 2; i <= Nmax && p > 1; i++)
{
if(ciur[i] == 0)
{
if(p % i == 0)
{
divprimmax = i;
while(p % i == 0)
{
p = p / i;
}
}
for(j = i * i; j <= Nmax; j += i)
{
ciur[j] = 1;
}
}
}
if(p > 1)
{
divprimmax = p;
}
l = 1;
r = Nmax;
while(l <= r)
{
mid = (l + r) / 2;
if(esteSolutie(mid, divprimmax, q))
{
sol = mid;
r = mid - 1;
}
else
{
l = mid + 1;
}
}
fout << sol;
return 0;
}