Cod sursa(job #3239656)

Utilizator Andrei1209Andrei Mircea Andrei1209 Data 7 august 2024 11:36:02
Problema GFact Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>

using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long INF = 999999, maxim = -1;
int baza[100], exp[100], k;
bool verif( int mij )
{
    int i;
    for ( i = 1; i <= k; ++i )
    {
        int 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()
{
    int 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;
}