Cod sursa(job #3252226)

Utilizator andrei257Andrei Enache andrei257 Data 28 octombrie 2024 21:10:55
Problema GFact Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
// https://www.infoarena.ro/problema/gfact

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;

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);
	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;
}