Pagini recente » Cod sursa (job #2367523) | Cod sursa (job #784123) | Cod sursa (job #1846453) | Cod sursa (job #2702701) | Cod sursa (job #1636535)
#include <fstream>
#define INF 5000000000
#define NMAX 50
using namespace std;
ifstream f("gfact.in");
ofstream g("gfact.out");
long long p , q , n , sol , nr;
void desc(long long x);
long long verif(long long x , long long exp , long long div);
long long caut_bin(long long exp , long long div);
int main() {
f >> p >> q;
desc(p);
return 0;
}
void desc(long long x) {
long long d = 2;
while(x != 1 && d < x) {
if(x % d == 0) {
while(x % d == 0) {
++nr;
x /= d;
}
nr *= q;
sol = max(sol , caut_bin(nr , d));
}
++d;
}
if(x != 1) {
nr = q;
sol = max(sol , caut_bin(nr , d));
}
g << sol;
}
long long caut_bin(long long exp , long long div) {
long long i , p = 0;
for(i = 1 ; i <= INF ; i <<= 1);
while(i) {
if(verif(i + p , exp , div) == 0) {
p += i;
}
i >>= 1;
}
return p + 1;
}
long long verif(long long x , long long exp , long long div) {
long long p = div , aux = 0;
while(p <= x) {
aux += x / p;
p *= div;
}
if(aux < exp) {
return 0;
}
return 1;
}