Pagini recente » Cod sursa (job #3292606) | Cod sursa (job #1896784) | Cod sursa (job #1041) | Cod sursa (job #2868909) | Cod sursa (job #716447)
Cod sursa(job #716447)
#include <fstream>
using namespace std;
unsigned int p=0;
unsigned int nrzero(long long nr)
{
long long zero=0,i;
for(i=5; i<=nr; i*=5)
{
zero+=nr/i;
}
return zero;
}
unsigned long dublu=0;
/**
Intoarce numarul cu numarul de zerouri cautat
*/
long search(unsigned long start,unsigned long end)
{
unsigned long mid=(start+end)/2;
unsigned long zero=nrzero(mid);
if(dublu==mid)
return -1;
dublu=mid;
if(zero==p)
return mid;
else if(p<zero)
return search(start,mid);
else
return search(mid,end);
}
int main()
{
ifstream fin("fact.in");
ofstream out("fact.out");
fin>>p;
if(p==0)
{
out<<1;
return 0;
}
long rez=search(0,1-0);
if(rez==-1)
{
out<<(-1);
return 0;
}
while(rez%5!=0)
rez--;
if(nrzero(rez)==p)
out<<rez;
else
out<<(-1);
return 0;
}