Pagini recente » Cod sursa (job #738294) | Cod sursa (job #172218) | Cod sursa (job #2530412) | Cod sursa (job #2836713) | Cod sursa (job #397447)
Cod sursa(job #397447)
#include <stdio.h>
#include <math.h>
long nrZero (long n)
{
long cinci=1,s=0;
while(1)
{
cinci=cinci*5;
if (n/cinci>0) s+=n/cinci;
else break;
}
return s;
}
int main()
{
long p,nr,lim_inf=5,lim_sup=1000000000;
FILE *f,*g;
f=fopen("fact.in","r");
fscanf(f,"%li",&p);
fclose(f);
g=fopen("fact.out","w");
if (p==0) nr=1;
else
{
while(1)
{
if (nrZero((lim_inf+lim_sup)/2)<p)
lim_inf=(lim_inf+lim_sup)/2;
else
if (nrZero((lim_inf+lim_sup)/2)>p)
lim_sup=(lim_inf+lim_sup)/2;
else
if (nrZero((lim_inf+lim_sup)/2)==p)
{
nr=((lim_inf+lim_sup)/2)-(((lim_inf+lim_sup)/2)%5);
break;
}
if (lim_inf==lim_sup && nrZero(lim_inf)!=p)
{
nr=-1;
break;
}
}
}
fprintf(g,"%li ",nr);
fclose(g);
return 0;
}