Pagini recente » Cod sursa (job #2054673) | Istoria paginii runda/zienuntu | Cod sursa (job #852933) | Cod sursa (job #1560697) | Cod sursa (job #1117817)
#include <fstream>
using namespace std;
int main()
{
ifstream f ("fact.in");
ofstream g ("fact.out");
int n, p, nfact, i, putere = 1,cnt5, cnt2,p2,p5,mid,n0=1, res=-1;
f >> p;
int left = 1;
int right = 2000000000;
while (left <= right)
{
mid = (left+right) / 2;
p2 = 2;
cnt2 = 0;
while (p2 <= mid)
{
cnt2 = cnt2 + mid/p2;
p2 = p2 * 2;
}
p5 = 5;
cnt5 = 0;
while (p5 <= mid)
{
cnt5 = cnt5 + mid/p5;
p5 = p5 * 5;
}
int n0;
if (cnt2 <= cnt5) n0 = cnt2;
if (cnt2 >= cnt5) n0 = cnt5;
if (n0 > p) right = mid - 1;
if (n0 < p) left = mid + 1;
if (n0 == p)
{
res = mid;
right = mid - 1;
}
}
g << res;
return 0;
}