Cod sursa(job #772358)

Utilizator vlase.paulVlase Paul vlase.paul Data 29 iulie 2012 12:40:44
Problema Factorial Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
#include <stdlib.h>

int zeros( int n )
{
    int z = 0;

    do {
        n = n / 5;
        z += n;
    } while( n != 0 );

    return z;
}

int main( void )
{
    int P, z;
    int st, dt, m;

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

    scanf( "%d", &P );

    if ( P == 0 ) {
        printf( "1\n" );

        return EXIT_SUCCESS;
    }

    st = 1;
    dt = 5 * P;

    while ( st <= dt ) {
        m = ( st + dt ) / 2;

        z = zeros( m );
        if ( z == P ) {
            printf("%d\n", m - m % 5 );

            return EXIT_SUCCESS;
        } else if ( z < P ) {
            st = m + 1;
        } else {
            dt = m - 1;
        }
    }
    printf( "%d\n", -1 );

    return EXIT_SUCCESS;
}