Pagini recente » Cod sursa (job #1158050) | Cod sursa (job #1542783) | Cod sursa (job #1862979) | Cod sursa (job #3354778) | Cod sursa (job #3321371)
#include <fstream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long p, q, div, pcopie, bmin, expon;
long long calc(long long b, long long d) {
long long rez=0, putere=d;
while(putere<=b) {
rez+=b/putere;
putere*=d;
}
return rez;
}
long long cautare(long long x) {
long long le, ri, mid, best=0;
le=1; ri=p*q;
while(le<=ri) {
mid=(le+ri)/2;
if(calc(mid, div) >= x) {
best=mid;
ri=mid-1;
}
else {
le=mid+1;
}
}
return best;
}
int main()
{
fin >> p >> q;
pcopie=p;
div=2;
while(pcopie>1) {
if(pcopie%div==0) {
expon=0;
while(pcopie%div==0) {
expon++;
pcopie/=div;
bmin=max(bmin, cautare(expon*q));
}
}
}
fout << bmin;
return 0;
}