Cod sursa(job #768076)

Utilizator PopdanDanielPopdan Daniel PopdanDaniel Data 15 iulie 2012 21:35:08
Problema Factorial Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
#include <stdlib.h>
int nr_zero(int n)
    {
        int rez=0,k=5;
        while(n>=k)
            {
                rez+=n/k;
                k=k*5;
            }
        return rez;
    }
int cautare_binara(int p)
    {
        int i=1,l,j,rez,k,a=4*p,b=5*p;
        k=nr_zero(b);
        while(k!=p)
        {
            l=0;

            if(((a+b)%2)!=0) l=1;
            k=nr_zero(((a+b)/2)+l);
            j=(a+b)/2+l;
            if(k<p)
            {
            a=j;
            i=0;
            }
            else
            {
            b=j;
            i=1;
            }

            if((b-a)==1)
            return -1;


        }
    if(i==1)
    rez=b;
    else
    rez=a;
    rez=(rez/5)*5;
    return rez;
    }
int main()
{
    int p,rez;
   freopen("fact.in","r",stdin);
   freopen("fact.out","w",stdout);

    scanf("%d", &p);
    if(p==0)
    rez=1;
    else
    rez=cautare_binara(p);
    printf("%d\n", rez);
    return 0;
}