Pagini recente » Cod sursa (job #3332037) | Cod sursa (job #737568) | Cod sursa (job #1785046) | Cod sursa (job #418951) | Cod sursa (job #3311565)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream fin("factorial.in");
ofstream fout("factorial.out");
long long P;
fin >> P;
if (P == 0)
{
fout << -1 << "\n";
return 0;
}
long long left = 1, right = 5 * P; // limita superioară simplă
long long answer = -1;
while (left <= right)
{
long long mid = (left + right) / 2;
long long count = 0;
long long divisor = 5;
while (mid / divisor > 0)
{
count += mid / divisor;
divisor *= 5;
}
if (count == P)
{
answer = mid;
right = mid - 1;
}
else
if (count < P)
left = mid + 1;
else
right = mid - 1;
}
fout << answer << "\n";
}