Pagini recente » Cod sursa (job #1525620) | Cod sursa (job #2056358) | Cod sursa (job #2862395) | Cod sursa (job #2096352) | Cod sursa (job #397451)
Cod sursa(job #397451)
#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,k,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)
{
k=nrZero((lim_inf+lim_sup)/2);
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 (nrZero((lim_inf+lim_sup)/2)==k)
{
nr=-1;
break;
}
}
}
fprintf(g,"%li ",nr);
fclose(g);
return 0;
}