Pagini recente » Cod sursa (job #2866796) | Cod sursa (job #2154917) | Cod sursa (job #846448) | Cod sursa (job #2064159) | Cod sursa (job #2790892)
#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;
}