Cod sursa(job #978232)

Utilizator stefanfStefan Fulger stefanf Data 28 iulie 2013 13:08:38
Problema Factorial Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>

int trailingZeros(int n) {
    int i, count = 0;

    for(i = 5; i < n; i *= 5) 
        count += n / i;

    return count;
}

int bsearch(int l, int r, int x) {
    int m;
    int t;

    while(l <= r) {
        m = (l + r) / 2;
        t = trailingZeros(m);
        if (t == x) {
            if (m % 5 == 0)
                return m;
            else 
                r = m - 1;
        }
        else {
            if (t < x)
                l = m + 1;
            else
                r = m - 1;
        }
    }

    return -1;
}

int main()
{
    freopen("fact.in", "r", stdin);
    freopen("fact.out", "w", stdout);

    int n, result;
    scanf("%d", &n);

    if (n == 0)
        result = 1;
    else {
        result = bsearch(0, 5 * n, n);
    }

    printf("%d", result);

    return 0;
}