Cod sursa(job #980929)

Utilizator ionut_ungureanuUngureanu Vladut Ionut ionut_ungureanu Data 5 august 2013 21:43:40
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdio>
#define FIN "factorial.in","r",stdin
#define FOUT "factorial.out","w",stdout

using namespace std;

long long p,st,dr,mid,fact;

long long factorial(long long x)
{
    long long  d=5,nr=0;
    while(d<=x)
    {
        nr+=x/d;
        d*=5;
    }


    return nr;
}


int main()
{
    freopen(FIN);
    freopen(FOUT);

    scanf("%lld",&p);
    if(p==0)
    {
        printf("1");
        return 0;
    }

    st=0;
    dr=1000000000;

    while(st<=dr)
    {
        mid=(st+dr)/2;
        fact=factorial(mid);
        if( fact==p && mid%5==0){printf("%lld",mid);return 0;}

        if(fact<p)st=mid+1;
        else dr=mid-1;
    }

    printf("-1");
    return 0;
}