Pagini recente » Cod sursa (job #21125) | Cod sursa (job #2700783) | Cod sursa (job #911216) | Cod sursa (job #2294251) | Cod sursa (job #3252217)
// https://www.infoarena.ro/problema/gfact
#include <bits/stdc++.h>
using namespace std;
using ull = unsigned long long;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
ull p, q;
int factP(const ull n)
{
int x = 0;
for (ull i = p; i <= n; i *= p)
x += n / i;
return x;
}
ull searchInput(const ull st, const ull dr)
{
const ull mid = (st + dr) / 2LL, val = factP(mid);
cout << st << ' ' << dr << ' ' << val << '\n';
if (val == q)
return mid;
if (val > q)
return searchInput(st, mid - 1);
return searchInput(mid + 1, dr);
}
int main()
{
ull sol;
fin >> p >> q;
sol = searchInput(0, ULLONG_MAX - 1);
if (sol != 1)
sol = sol - sol % p;
fout << sol;
return 0;
}