Cod sursa(job #2790892)

Utilizator Stefan_GhinescuGhinescu Stefan-George Stefan_Ghinescu Data 29 octombrie 2021 18:54:04
Problema GFact Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

using namespace std;

ifstream fin("gfact.in");
ofstream fout("gfact.out");

const unsigned long long BIG = (1<<64) - 1;

unsigned long long p, q;

unsigned long long idfk(int n, int d)
{
    int s = 0;
    for (int i = d; n / i > 0; i *= d)
        s += n / i;
    return s;
}

unsigned long long bs()
{
    unsigned long long st = 0, dr = BIG, mij = dr - (dr - st) / 2, idk;
    while (st <= dr)
    {
        idk = idfk(mij, p);
        if (idk == q)
        {
            dr = mij - 1;
        }
        if (idk > q)
        {
            dr = mij - 1;
        }
        if (idk < q)
        {
            st = mij + 1;
        }
        mij = dr - (dr - st) / 2;
    }
    return st;
}

int main()
{
    fin >> p >> q;
    fout << bs();
    return 0;
}