Pagini recente » Cod sursa (job #2806776) | Cod sursa (job #1839233) | Cod sursa (job #648064) | Cod sursa (job #1275032) | Cod sursa (job #3239667)
#include <fstream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long INF = 1<<60;
long long baza[25], exp[25], k;
bool verif( long long mij )
{
long long i;
for ( i = 1; i <= k; ++i )
{
long long x = baza[i], nr = 0;
while ( mij >= x )///cati de factori sunt in mij factorial
{
nr += mij / x;
x = x * baza[i];
}
if ( exp[i] > nr )
return false;
}
return true;
}
long long f( )
{
long long st = 1, dr = INF, mij, sol;
while ( st <= dr )
{
mij = ( st + dr ) / 2;
if ( verif(mij) == true )
{
sol = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
return sol;
}
int main()
{
long long p, q, i, factor = 2, putere;
fin >> p >> q;
while ( p > 1 )
{
putere = 0;
while ( p % factor == 0 )
p /= factor, ++putere;
putere *= q;
baza[++k] = factor;
exp[k] = putere;
++factor;
}
// for ( i = 1; i <= k; ++i )
// fout << baza[i] << " " << exp[i] << endl;
fout << f() << '\n';
return 0;
}