Pagini recente » Cod sursa (job #1495822) | Cod sursa (job #802782) | Cod sursa (job #1040978) | Cod sursa (job #3127262) | Cod sursa (job #3307335)
/*
https://infoarena.ro/problema/fact
*/
#include <fstream>
using namespace std;
const int VMIN = 1;
const int VMAX = 5e8;
int nr_zero(int n)
{
///numarul de zerouri de la sfarsitul lui n!
int nr_0 = 0;
while (n >= 1)
{
///nr_0 = n /= 5;
nr_0 += n / 5;
n /= 5;
}
return nr_0;
}
int caut_bin(int p)
{
///cautam binar cel mai mic n cu propr. ca n! are
///CEL PUTIN p zerouri la final
int st = VMIN, dr = VMAX, rez = VMAX + 1;
while (st <= dr)
{
int m = (st + dr) / 2;
if (nr_zero(m) >= p)
{
rez = m;
dr = m - 1;
}
else
{
st = m + 1;
}
}
return rez;
}
int main()
{
ifstream in("fact.in");
ofstream out("fact.out");
int p;
in >> p;
int n = caut_bin(p);
if (nr_zero(n) > p)
{
n = -1;
}
out << n << "\n";
in.close();
out.close();
return 0;
}