Pagini recente » Cod sursa (job #839551) | Cod sursa (job #1865435) | Cod sursa (job #1632269) | Cod sursa (job #1129842) | Cod sursa (job #2619509)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
//functie care verifica daca numarul are n zero-uri
bool verificare(int p, int n)
{
int temp = p, count = 0, f = 5;
while (f <= temp)
{
count += temp/f;
f = f*5;
}
return (count >= n);
}
//functie care returneaza numarul cel mai mic, al carui factorial are n zero-uri
int returneazaNumarFactorial(int n)
{
int inceput=0,sfarsit=5*n;
//cautare binara
while(inceput<sfarsit)
{
int mijloc=(inceput+sfarsit)/2;
//verificam daca mijlocul contine n zero-uri
if(verificare(mijloc,n))
sfarsit=mijloc;
else
inceput=mijloc+1;
}
if(verificare(inceput,n))
return inceput;
return -1;
}
int main()
{
int p,x;
fin>>p;
if(p==0)
fout<<1;
else
if(p==1)
fout<<5;
else
{
fout<<returneazaNumarFactorial(p);
}
return 0;
}