Pagini recente » Cod sursa (job #227780) | Diferente pentru preoni-2007/runda-1 intre reviziile 22 si 20 | gardening | Cod sursa (job #3190987) | Cod sursa (job #2067664)
#include <fstream>
using namespace std;
ifstream cin("gfact.in");
ofstream cout("gfact.out");
long long descb[75], desce[75], nrdiv = 0, p, q;
void desc() {
if (p % 2 == 0) {
descb [++nrdiv] = 2;
while (p % 2 == 0) {
++desce[nrdiv];
p /= 2;
}
}
long long d = 3;
while (d * d <= p) {
if (p % d == 0) {
descb [++nrdiv] = d;
while (p % d == 0) {
++desce[nrdiv];
p /= d;
}
}
d += 2;
}
if (p != 1) {
descb[++nrdiv] = p;
++desce[nrdiv];
}
}
bool numerge(long long k) {
long long s;
for (long long i = 1; i <= nrdiv; ++i) {
s = 0;
while (k >= descb[i]) {
s += (k /= descb[i]);
}
if (s < desce[i] * q) {
return true;
}
}
return false;
}
long long cb () {
long long pas = 1LL<<60 ;
long long r = 0;
while(pas) {
if (numerge(r + pas)) {
r += pas;
}
pas /= 2;
}
return 1 + r;
}
int main()
{
cin >> p >> q;
desc();
cout << cb();
return 0;
}