Cod sursa(job #598355)

Utilizator mavroMavrodin Bogdan-Florentin mavro Data 25 iunie 2011 16:14:29
Problema Factorial Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>
#include <limits.h>

// nr natural minim pt care N! are P zerouri;

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

    long int p, n = 0, n2 = 0, p2 = 0, p1 = 0, k = 1, sup, rsup = INT_MAX;

    scanf("%ld", &p);

    while(k)
    {
        k = 0;
        n2 = 1;
        p2 = 0;
        while((p1 + p2*5+1) <= p)
        {
            k = 1;
            p2 = p2 * 5 + 1;
            n2 = n2 * 5;
        }
        if((p1 + p2*5+1) > p && rsup > n2)
        {
            rsup = n2;
            sup = n + n2 * 5;
        }

        p1 = p1 + p2;
        if(n != 1)
            n = n + n2;
        if(p == p1)
        {
            if(n >= sup)
            {
                printf("-1");
                return 0;
            }
            printf("%ld", n);
            return 0;
        }
    }
    return 0;
}