Cod sursa(job #793518)

Utilizator cristiprgPrigoana Cristian cristiprg Data 3 octombrie 2012 14:19:23
Problema Factorial Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>

int f(int x)
{
    if (x < 5)
        return 0;

    int i = 0, putere=0, copie_i;
    do
    {
        i += 5;
        copie_i = i;

        while(copie_i > 0 && copie_i % 5 == 0)
        {
            copie_i /= 5;
            ++putere;
        }
    }while(i + 5 <= x);

    return putere;
}

int bin_search(int left, int right, int P)
{


    if(right - left <= 1)
        return right;

    int middle = (left + right) / 2;
  //  printf("%d %d %d\nf(%d) = %d\n", left, middle,  right, middle, f(middle));

    if ( f (middle) >= P)
        return bin_search(left, middle, P);
    else
        return bin_search(middle, right, P);

}

int main()
{
    FILE *f = fopen("fact.in", "r");
    int P;
    fscanf(f, "%d", &P);
    fclose(f);

    f = fopen("fact.out", "w");
    fprintf(f, "%d\n", bin_search(1, 100000000, P));
    fclose(f);
    return 0;
}