Pagini recente » Cod sursa (job #2641435) | Cod sursa (job #317537) | Cod sursa (job #50058) | Cod sursa (job #2631961) | Cod sursa (job #882102)
Cod sursa(job #882102)
#include <iostream>
#include <fstream>
using namespace std;
unsigned long int P,mij; unsigned long long int st=1,dr=10000000000LL; bool ind=false;
ifstream fin("fact.in");
ofstream fout("fact.out");
unsigned long int nrzerouri(unsigned long int a)
{
unsigned int k=0; unsigned long int i=5;
if(i>a) return 0;
else
{
while(i<=a)
{
k+=a/i;
i*=5; //Se cauta cate numere cu 5 in coada sunt in factorialul numarului deoarece numai 5*2 lasa un 0 in coada si numere 2 vor fi tot timpul suficiente
}
return k;
}
}
int main()
{
fin>>P;
do //Cautare binara
{
mij=(st+dr)/2;
if(P==nrzerouri(mij))
{
ind=true;
while(P!=nrzerouri(st))
st++;
fout<<st;
}
else
{
if(P<nrzerouri(mij)) dr=mij-1;
else st=mij+1;
}
}
while((st!=dr)&&(st+1!=dr)&&(ind==false));
if((P==nrzerouri(mij))&&(ind==false)) fout<<mij;
else if(ind==false) fout<<-1;
cout<<st<<' '<<dr;
}