Cod sursa(job #1604932)

Utilizator SolcanMihaiSolcan Mihai Andrei SolcanMihai Data 18 februarie 2016 18:02:51
Problema Factorial Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <cstdio>

using namespace std;

int n;

int puteri[] = {25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125, 244140625, 1220703125, 6103515625};

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

    scanf("%d", &n);

    if(n == 0)
    {
        printf("1");
        return 0;
    }

    int nr = 5 * n;
    int largest = -1;

    for(int i = 12; i >= 0; i--)
    {
        if(nr >= puteri[i])
        {
            largest = i;
            break;
        }
    }

    for(int i = largest; i >= 0; i--)
    {
        int numar = nr / puteri[i];

        nr -= numar * 5;

        numar = numar - nr / puteri[i];

        nr += numar * 5;
    }

    int verificare = 0;

    for(int i = largest; i >= 0; i--)
    {
        verificare += nr / puteri[i];
    }

    verificare += nr / 5;

    if(verificare != n)
    {
        printf("-1");
        return 0;
    }

    printf("%d", nr);


    return 0;
}