Pagini recente » Cod sursa (job #761417) | Cod sursa (job #1434102) | Cod sursa (job #2124160) | Cod sursa (job #2654943) | Cod sursa (job #2828443)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("gfact.in");
ofstream fout ("gfact.out");
int p,x;
int cond(int n)
{
int a,b,nrn=0,put=0,d,copie,calc=2000000000;
a=p;
for(d=2;d*d<=a;d++)
{
put=0;
copie=n;
if(a%d==0)
{
nrn=0;
while(a%d==0)
{
a=a/d;
put++;
}
while(copie>=d)
{
copie=copie/d;
nrn=nrn+copie;
}
nrn=nrn/put;
calc=min(calc,nrn);
}
}
if(a>=2)
{
nrn=0;
copie=n;
while(copie>=a)
{
copie=copie/a;
nrn=nrn+copie;
}
calc=min(calc,nrn);
}
return calc;
}
int cautbin()
{
int st=1,dr=1000000005;
int mij,a,ind=0;
while(st<=dr)
{
mij=(st+dr)/2;
a=cond(mij);
if(a>=x)
{
ind=mij;
dr=mij-1;
}
else
st=mij+1;
}
return ind;
}
int main()
{
fin>>p>>x;
fout <<cautbin()<<"\n";
return 0;
}