Pagini recente » Cod sursa (job #586780) | Cod sursa (job #348932) | Cod sursa (job #58664) | Cod sursa (job #2800067) | Cod sursa (job #677934)
Cod sursa(job #677934)
#include <stdio.h>
#include <limits.h>
long p,n,i,x,d,stanga,dreapta,c;
long zero(long x)
{long d=5,s;
s=0;
while (x/d>0)
{s=s+x/d;
d*=5;}
return s;
}
int main()
{
FILE *f = fopen("fact.in","r");
FILE *g = fopen("fact.out","w");
fscanf(f,"%ld",&p);
stanga=1;dreapta=p*5+1;
while (stanga<=dreapta)
{
c=(stanga+dreapta)/2;
if (p<zero(c)) dreapta=c-1;
else if (p>zero(c)) stanga=c+1;
else {n=c;break;}
if (zero(dreapta)<p || zero(stanga)>p) {fprintf(g,"-1");return 0;}
}
while (zero(n)==p) n--;
if (p==0) fprintf(g,"1");
else fprintf(g,"%ld",n+1);
fclose(f);fclose(g);
return 0;
}