Pagini recente » Cod sursa (job #1278789) | Cod sursa (job #608026) | Cod sursa (job #1695616) | Cod sursa (job #2141220) | Cod sursa (job #2085043)
#include <fstream>
using namespace std;
ifstream cin ("gfact.in") ;
ofstream cout ("gfact.out") ;
const int M = 100000 ;
int v1[M] , v2[M] , nr ;
int main()
{
long long p, q, x ;
cin >> p >> q ;
int d = 2 ;
while (d * d <= p) {
if (p % d == 0) {
v1[nr] = d ;
x = 0 ;
while (p % d == 0) {
p /= d ;
x++ ;
}
v2[nr] = x * q ;
nr++ ;
}
d++ ;
}
if (p > 1) {
v1[nr] = p ;
v2[nr] = q ;
nr++ ;
}
int sol ;
long long r = 0, r2, cate ;
long long pas = 1LL << 45 ;
while (pas > 0) {
sol = 0;
for (int i = 0; i < nr; i++) {
cate = 0;
r2 = r + pas;
while (r2 > 0) {
r2 /= v1[i];
cate += r2 ;
}
if (cate < v2[i]) {
i = nr ;
sol = 1 ;
}
}
if (sol != 0 ) {
r += pas ;
}
pas >>= 1;
}
cout << r + 1 ;
return 0;
}