Pagini recente » Cod sursa (job #793291) | Cod sursa (job #225794) | Cod sursa (job #2853311) | Cod sursa (job #1984646) | Cod sursa (job #1093275)
#include <fstream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
typedef long long i64;
const i64 kmax= 100;
i64 e[kmax+1], f[kmax+1];
i64 k, q;
i64 maxpow( i64 x, i64 p ) {
i64 y= 0;
while ( x>0 ) {
y= y+x/p;
x/= p;
}
return y;
}
bool check( i64 x ) {
bool ok= 0;
for ( i64 i= 1; i<=k; ++i ) {
if ( maxpow( x, e[i] )<f[i]*q ) {
ok= 1;
}
}
return ok;
}
int main( ) {
i64 p;
fin>>p>>q;
for ( i64 i= 2; i*i<=p; ++i ) {
if ( p%i==0 ) {
e[++k]= i;
while ( p%i==0 ) {
p/= i;
++f[k];
}
}
}
if ( p>1 ) {
e[++k]= p;
f[k]= 1;
}
i64 sol= 0, step= (i64)1<<60;
for ( ; step; step/= 2 ) {
if ( check( sol+step ) ) {
sol+= step;
}
}
fout<<sol+1<<"\n";
return 0;
}