Cod sursa(job #677934)

Utilizator cata_popescuPopescu Catalina cata_popescu Data 10 februarie 2012 20:23:15
Problema Factorial Scor 95
Compilator c Status done
Runda Arhiva de probleme Marime 0.68 kb
#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;
}