Cod sursa(job #998894)

Utilizator crucerucalinCalin-Cristian Cruceru crucerucalin Data 18 septembrie 2013 17:48:43
Problema Factorial Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>
#include <limits.h>

int main()
{
    int st, dr, mij;
    int P, k;
    int mult;

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

    scanf("%d",&P);

    if ( !P ) {
        printf("%d",1);
        return 0;
    }

    st = 1; dr = 500000000;

    while ( st <= dr ) {
        mij = ( st + dr ) / 2;
        mult = 5;
        k = 0;
        while ( mult <= mij ) {
            k += mij/mult;
            mult *= 5;
        }
        if ( k == P ) break;
        else
            if ( k > P ) dr = mij-1;
            else
                st = mij+1;
    }

    mij = mij - mij%5;
    if ( st <= dr ) printf("%d",mij);
    else
        printf("%d",-1);


    return 0;
}