Pagini recente » Cod sursa (job #2823959) | Cod sursa (job #2662737) | Cod sursa (job #2475706) | Cod sursa (job #835836) | Cod sursa (job #2251425)
#include <fstream>
using namespace std;
ifstream f ("gfact.in");
ofstream g ("gfact.out");
int v [100] , p , q;
inline void desc (int a){
int o = 2 , ca = a;
while (o * o <= ca){
while (! (a % o))
a /= o , ++ v [o];
++ o;
}
if (a > 1)
v [a] = 1;
for(o = 2 ; o <= 23 ; ++ o)
v [o] *= q;
}
inline bool check (int a){
int i;
for(i = 2 ; i <= 23 ; ++ i){
if (v [i]){
int r = 0 , c = a;
long long b = i;
while (a / b){
r += a / b;
b *= i;
}
if (r < v [i])
return false;
}
}
return true;
}
inline int bsearch (){
int pas = (1 << 30) , found = 0;
while (pas){
if (! check (found + pas))
found += pas;
pas = (pas >> 1);
}
return found + 1;
}
int main()
{
f >> p >> q;
desc (p);
g << bsearch ();
return 0;
}