Cod sursa(job #1919695)

Utilizator maria_sinteaMaria Sintea maria_sintea Data 9 martie 2017 20:37:54
Problema Factorial Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>

using namespace std;

int n, nr, i;
int fr[22]={0,5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140725,1220703125};

int caut(int x)
{
    int st=0, dr=14;
    while(st<=dr)
    {
        int m=(st+dr)/2;
        if(x==fr[m])
            return m;
        if(x<fr[m])
            dr=m-1;
        else
            st=m+1;
    }
}

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

    scanf("%d", &n);
    while(nr+5+caut(i+5)<n)
    {
        i+=5;
        nr=nr+5+caut(i);
    }
    int aux=1;
    while(nr<n && aux<=4)
            nr++, i++, aux++;
    if(i!=0 && nr==n)
        printf("%lld", 5LL*i);
    else
        if(i==0)
            printf("1");
    else
        printf("-1");
    return 0;
}