Pagini recente » Cod sursa (job #1777287) | Cod sursa (job #2326337) | Cod sursa (job #484026) | Cod sursa (job #370415) | Cod sursa (job #2790890)
#include <fstream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
const int BIG = (1<<30) - 1;
int p, q;
int idfk(int n, int d)
{
int s = 0;
for (int i = d; n / i > 0; i *= d)
s += n / i;
return s;
}
int bs()
{
int 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;
}