Cod sursa(job #806172)

Utilizator pitradaPit-Rada Ionel-Vasile pitrada Data 1 noiembrie 2012 23:23:09
Problema Factorial Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
# include<fstream>
using namespace std;

int nr_zerouri(int d)
{
    int n;
    n=0;
    while (d>4)
    {
        d=d/5;
        n=n+d;
    }
    return n;
}

int main()
{
    ifstream cin("fact.in");
    ofstream cout("fact.out");
    int p,n,a,b,c,d;
    cin >> p;
   a=1;
   b=100000010;
    while(a<=b)
    {
        c=(a+b)/2;

        d=c;
        n=0;
        while (d>4)
        {
            d=d/5;
            n=n+d;
        }

        if(n==p)
        {
            a=c+1; b=c;
        }
        else
        {

            if(n<p)
            {
                a=c+1;
            }
            else
            {
                b=c-1;
            }
        }
    }
    if (p==0)
    {
        cout<<1;
    }
    else
    {
        d=b;
        n=0;
        while (d>4)
        {
            d=d/5;
            n=n+d;
        }
        if(n!=p)
        {
          cout << -1 ;
        }
       else
        {
           while(n==p)
           {
              b--;
              d=b;
              n=0;
              while (d>4)
              {
                d=d/5;
                n=n+d;
              }
           }
           cout << b+1;
       }
   }
}