Cod sursa(job #1597061)

Utilizator andreiskiorAndrei Cristian Nastase andreiskior Data 11 februarie 2016 17:11:51
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#include <climits>

int zero(int n)
{
    int nr = 0;
    while(n >= 5)
    {
        nr += n / 5;
        n /= 5;
    }
    return nr;
}

int main()
{
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    int p,st = 1, dr = INT_MAX,g = 1,sol = INT_MAX,m,z;
    scanf("%d",&p);
    if(p == 0){
        printf("1\n");
        return 0;
    }
    while(st <= dr)
    {
        m = (st + dr) / 2;
        z = zero(m);
        if(z >= p)
        {
            if(m < sol && z == p)
                sol = m;
            dr = m - 1 ;
        }
        else
        {
            st = m + 1;
        }
    }
    if(sol == INT_MAX)
        printf("-1\n");
    else
        printf("%d\n",sol);
    return 0;
}