Pagini recente » Cod sursa (job #2029683) | Cod sursa (job #1647846) | Cod sursa (job #3306527) | Cod sursa (job #1998184) | Cod sursa (job #3321374)
#include <fstream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long p, q, divizor, 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, divizor) >= x) {
best=mid;
ri=mid-1;
}
else {
le=mid+1;
}
}
return best;
}
int main()
{
fin >> p >> q;
pcopie=p;
divizor=2;
while(pcopie>1) {
if(pcopie%divizor==0) {
expon=0;
while(pcopie%divizor==0) {
expon++;
pcopie/=divizor;
bmin=max(bmin, cautare(expon*q));
}
}
}
fout << bmin;
return 0;
}