Pagini recente » Cod sursa (job #549857) | Cod sursa (job #1172690) | Cod sursa (job #1480192) | Cod sursa (job #2276984) | Cod sursa (job #2232075)
#include <bits/stdc++.h>
using namespace std;
int p, q;
inline int legendre(int x, int y){
int ans = 0;
long long p = y;
while(p <= x){
ans += x / p;
p = 1LL * p * y;
}
return ans;
}
inline bool check(int x){
int d = 2, P = p;
while(d * d <= P){
if(P % d == 0){
int k = 0;
while(P % d == 0)
P = P / d, ++k;
if(legendre(x, d) < k * q) return 0;
}
++d;
}
if(x > 1) if(legendre(x, P) < q) return 0;
return 1;
}
int main()
{
freopen("gfact.in", "r", stdin);
freopen("gfact.out", "w", stdout);
scanf("%d%d", &p, &q);
long long st = 1, dr = 1e18;
while(st <= dr){
long long mij = (st + dr) / 2;
if(check(mij)) dr = mij - 1;
else st = mij + 1;
}
printf("%lld", st);
return 0;
}