Pagini recente » Cod sursa (job #361791) | Cod sursa (job #1172844) | Cod sursa (job #821043) | Diferente pentru home intre reviziile 454 si 455 | Cod sursa (job #1242953)
#include <fstream>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
int p,valo;
int nr_zero(int x) // aceasta functie verifica cati 5 are n factorial
{
int i,s=0; // ok , deci aici stim ca numarul de 0 este dat de produsul dintre 2 si 5 , 2 avem destui , asa ca o sa ne intereseze numa cati de 5 avem
for(i=5;i<=x;i*=5) //aici mergem din puterile lui 5 , si vedem de cate ori il avem pe 5 la puterea i (in n factorial)
{
s=s+x/i;
}
return s;
}
int bsearch(int val) // vom cauta binar solutia
{
int step=134217728,rez=0;
for (rez=0;step;step>>=1)
if (nr_zero(rez+step)<=p && rez+step<=500000000)
rez+=step;
return rez;
}
int main()
{
f>>p;
valo=bsearch(p);
if (nr_zero(valo)==p)
g<<valo-4;
else
g<<"-1";
return 0;
}