Pagini recente » Cod sursa (job #1176481) | Cod sursa (job #3222525) | Cod sursa (job #2329326) | Cod sursa (job #977685) | Cod sursa (job #1760833)
#include<fstream>
using namespace std;
ifstream f("gfact.in");
ofstream g("gfact.out");
const long long lim=1LL<<50;
long long div1[500],put[500],n,baza,exp;
void div1izori(long long x)
{
long long i;
for(i=2;i*i<=x;i++)
if(x%i==0)
{
n++;
div1[n]=i;
while(x%i==0)
{
x/=i;
put[n]++;
}
}
if(x!=1)
{
n++;
div1[n]=x;
put[n]=1;
}
}
long long verif(long long x)
{
long long i,k,sum;
for(i=1;i<=n;i++)
{
sum=0;
k=div1[i];
while(x/k>0)
{
sum+=x/k;
k=k*div1[i];
}
if(sum<put[i]*exp)
return 0;
}
return 1;
}
int main()
{
long long st,dr,mij,rasp=0;
f>>baza>>exp;
div1izori(baza);
st=0;
dr=lim;
while(st<=dr)
{
mij=(st+dr)/2;
if(verif(mij)==1)
{
rasp=mij;
dr=mij-1;
}
else
st=mij+1;
}
g<<rasp;
return 0;
}