Pagini recente » Cod sursa (job #2076112) | Cod sursa (job #252849) | Cod sursa (job #1406483) | Cod sursa (job #1661879) | Cod sursa (job #2473946)
#include <bits/stdc++.h>
using namespace std;
long long zerouri_factorial(long long N)
{
long long putere_cinci = 5;
long long numar_zerouri = 0;
while(N >= putere_cinci)
{
numar_zerouri = numar_zerouri + N / putere_cinci;
putere_cinci = 5 * putere_cinci;
}
return numar_zerouri;
}
long long cauta_binar(long long P)
{
long long primul = 1, ultimul = 9000000000000;
while(primul <= ultimul)
{
long long mijloc = (primul + ultimul) / 2;
long long zerouri_mijloc = zerouri_factorial(mijloc);
if(zerouri_mijloc == P && zerouri_factorial(mijloc - 1) < P) return mijloc;
if(zerouri_mijloc >= P) ultimul = mijloc - 1;
else primul = mijloc + 1;
}
return -1;
}
int main()
{
ifstream fin("fact.in");
ofstream fout("fact.out");
long long P;
fin >> P;
if(P == 0) fout << 1;
else fout << cauta_binar(P);
}