Cod sursa(job #3238906)

Utilizator Andrei1209Andrei Mircea Andrei1209 Data 31 iulie 2024 15:03:19
Problema GFact Scor 75
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>

using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long INF = 99999999, maxim = -1;

long long f( int factor, int putere )
{
    int st = 1, dr = INF, mij, nr  = 0, sol;
    while ( st <= dr )
    {
        mij = ( st + dr ) / 2;
        int x = factor;
        nr = 0;
        while ( mij >= x )///cati de factori sunt in mij factorial
        {
            nr  += mij / x;
            x = x * factor;
        }
        if ( nr >= putere )
        {
            sol = mij;
            dr = mij - 1;
        }
        else
            st = mij + 1;

    }
    return sol;

}
int main()
{
    int p, q, i, factor = 2, putere, k  = 0;
    fin >> p >> q;
    while ( p > 1 )
    {
        putere = 0;
        while ( p % factor == 0 )
            p /= factor, ++putere;

        putere *= q;
        if ( putere != 0 )
        {
            long long val = f(factor, putere);
            maxim = max(maxim, val);
        }
        ++factor;

    }

    fout << maxim << '\n';
    return 0;
}