Cod sursa(job #966947)

Utilizator gbi250Gabriela Moldovan gbi250 Data 26 iunie 2013 20:10:26
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <cstdio>
#include <climits>
using namespace std;
long long n, i, c, ld=LONG_LONG_MAX-1, ls=1, mij, x, sol;
int sw=1;

long long zero(long long x)
{
    long long nr=0;
    while(x>0)
    {
        nr+=x/5;
        x/=5;
    }
    return nr;
}


int main()
{
    freopen("fact.in", "r", stdin);
    freopen("fact.out", "w", stdout);
    scanf("%lld", &n);
    if(n==0)
        printf("1\n");
    else
    {
        while(ls<ld&&sw)
        {
            mij=(ls+ld)/2;

            c=zero(mij);
          //  printf("\n%lld %lld %lld \n", ls, ld , c);
            if(c==n)
            {
                if(mij<5)
                    sol=1;
                else
                    sol=mij-mij%5;
                sw=0;
            }
            else if(c>n)
                ld=mij-1;
            else if(c<n)
                ls=mij+1;
            if(ls>ld)
            {
                sol=-1;
                sw=0;
            }

        }
      //  if(c==zero(ls))
        if(sol>0)
            printf("%d\n", sol);
        else
           printf("-1\n");
    }
    return 0;
}