Pagini recente » Cod sursa (job #2072894) | Cod sursa (job #791454) | Cod sursa (job #670516) | Cod sursa (job #2950296) | Cod sursa (job #2283807)
#include <fstream>
#include <climits>
#define ULL unsigned long long
using namespace std;
ULL p, i, nrz, in, sf, mj, mini;
ifstream f("fact.in");
ofstream g("fact.out");
ULL calcnrzero(ULL i)
{
ULL r = 0;
ULL pt = 5;
while (i / pt != 0)
{
r += i / pt;
pt *= 5;
}
return r;
}
int main()
{
f >> p;
mini = ULLONG_MAX;
i = 1;
sf = 400000015;
in = 1;
nrz = calcnrzero((sf+in) / 2);
mj = (sf + in) / 2;
if (p == 0)
mini = 1;
else
{
while (nrz >= p && in <= sf)
{
if (nrz > p)
{
sf = mj - 1;
mj = (sf + in) / 2;
nrz = calcnrzero(mj);
continue;
}
if (nrz < p)
{
in = mj + 1;
mj = (sf + in) / 2;
nrz = calcnrzero(mj);
continue;
}
if (nrz == p)
{
ULL j;
j = mj;
while (calcnrzero(j) == p)
{
mini = j;
j--;
}
break;
}
}
}
if (in > sf)
i = -1;
else
i = mini;
g << i<<"\n";
f.close();
g.close();
return 0;
}