Cod sursa(job #3252230)

Utilizator andrei257Andrei Enache andrei257 Data 28 octombrie 2024 21:14:11
Problema GFact Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
// 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;

ull factP(const ull n)
{
	ull 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) / 2ull, val = factP(mid);
	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 % p;
	fout << sol;
	return 0;
}