Pagini recente » Cod sursa (job #220157) | Cod sursa (job #1489809) | Cod sursa (job #1925883) | Cod sursa (job #2332056) | Cod sursa (job #1500537)
#include <bits/stdc++.h>
using namespace std;
ifstream in("gfact.in");
ofstream out("gfact.out");
long long nz(long long n,long long c)
{
long long p=c,sol=0;
while(p<=n)
{
sol+=(n/p);
p*=c;
}
return sol;
}
long long bs(long long fact, long long put)
{
long long s=1;
long long d=(1<<30);
d*=d;
long long k,mij;
while(s<=d)
{
mij=(s+d)/2;
k=nz(mij,fact);
if(k>=put)
{
d=mij-1;
}
else
{
s=mij+1;
}
}
mij=(s+d)/2;
k=nz(mij,fact);
if(k<put)
{
mij++;
}
return mij;
}
int main()
{long long p,q,i,nr;
in>>p>>q;
long long cp=p,d=2,mx=0;
while(d*d<=cp)
{
nr=0;
while(cp%d==0)
{
nr++;
cp/=d;
}
if(nr)
mx=max(mx,bs(d,nr*q));
d++;
}
if(cp!=1)
mx=max(mx,bs(cp,q));
out<<mx;
return 0;
}