Pagini recente » Cod sursa (job #3189856) | Cod sursa (job #1270598) | Cod sursa (job #1170361) | Cod sursa (job #2294437) | Cod sursa (job #3152485)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long fact(long long n,long long p)
{
long long cnt=0;
while(n)
{
cnt+=n/p;
n/=p;
}
return cnt;
}
long long cautbin(long long p,long long q)
{
long long i1=1,i2=1e18,mij,rez=0;
while(i1<=i2)
{
mij=(i1+i2)/2;
long long val=fact(mij,p);
if(val>=q)
{
rez=mij;
i2=mij-1;
}
else i1=mij+1;
}
return rez;
}
int main()
{
long long p,q,maxx=0;
fin>>p>>q;
int baza=2;
while(baza*baza<=p)
{
int ex=0;
while(p%baza==0)
{
ex++;
p/=baza;
}
if(ex>0)
{
maxx=max(maxx,cautbin(baza,q*ex));
}
baza++;
}
if(p>1)
{
maxx=max(maxx,cautbin(p,q));
}
fout<<maxx<<'\n';
return 0;
}