Cod sursa(job #1703885)

Utilizator BourucLiviuBouruc Petru Liviu BourucLiviu Data 17 mai 2016 19:05:08
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>

using namespace std;

unsigned long long nr0(int x)
{
    int p = 5;
    unsigned long long s = 0;
    while(x / p)
    {
        s += x / p;
        p *= 5;
    }
    return s;
}

int main()
{
    freopen("fact.in", "r", stdin);
    freopen("fact.out", "w", stdout);
    int p;
    scanf("%d", &p);
    fclose(stdin);
    if(!p)
    {
        printf("1");
        fclose(stdout);
        return 0;
    }
    int st = 1, dr = 1000000010, mij, nr;
    while(st <= dr)
    {
        mij = st + (dr - st) / 2;
        if(nr0(mij) >= p)
        {
            dr = mij - 1;
            nr = mij;
        }
        else st = mij + 1;
    }
    if(nr0(nr) != p)
    {
        printf("-1");
        fclose(stdout);
        return 0;
    }
    while(nr % 5) nr--;
    printf("%d", nr);
    fclose(stdout);
    return 0;
}