Cod sursa(job #784692)

Utilizator TheNechizFMI Razvan Birisan TheNechiz Data 6 septembrie 2012 18:04:19
Problema Factorial Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
# include <fstream>

using namespace std;

int c[] =
{
  1 , 5 , 25 , 125 , 625 , 3125 , 15625 , 78125 ,
  390625 , 1953125 , 9765625 , 48828125 , 244140625
};

int c1[] =
{
  0 , 1 , 6 , 31 , 156 , 791 , 3916 , 19514 ,
  97639 , 488264 , 2441389 , 12207014 , 61035139
};

int caut_b( int tinta ){

    short li,ls,mij,poz = 0;

    li = 0 ;
    ls = 12 ;

    while( li <= ls )
    {
        mij = ( li +ls ) / 2;

        if( c1[mij] <= tinta && poz < mij ) poz = mij;
        if( c1[mij] <= tinta )
            li = mij + 1;
            else
                ls = mij - 1;
    }

    return poz;
}

int main(){

    ifstream in("fact.in");
    ofstream out("fact.out");

    int p,p1,nr = 0,temp;

    in >> p;
    p1 = p;

    while(p1)
    {
        temp = caut_b(p1);
        nr += c[temp];
        p1 -= c1[temp];

    }

    out << nr;

    in.close();
    out.close();

    return 0;
}