Pagini recente » Cod sursa (job #1803410) | Borderou de evaluare (job #2015877) | Borderou de evaluare (job #2014043) | Cod sursa (job #2518443) | Cod sursa (job #2609141)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
ifstream in;
ofstream out;
long long nrz(long long x)
{
long long nr = 0;
long long put = 5;
while (x >= put)
{
nr += x / put;
put*= 5;
}
return nr;
}
void cb(long long lf, long long rg,long long z,long long & pz)
{
long long m = (lf + rg) / 2;
if (lf > rg)
{
pz = lf;
}
else
{
if (nrz(m) >= z)
cb(lf, m - 1, z, pz);
else
cb(m + 1, rg, z, pz);
}
}
int nrc, nrl, i, j;
long long z, lf, rg;
int main()
{
in.open("fact.in");
out.open("fact.out");
in >> z;
if (z == 0)
out << 1;
else
{
lf = 1;
rg = 5 * z;
long long pz = 0;
cb(lf, rg, z, pz);
if (nrz(pz) == z)
out << pz;
else
out << -1;
}
}