Cod sursa(job #784743)

Utilizator TheNechizFMI Razvan Birisan TheNechiz Data 6 septembrie 2012 19:57:44
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 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 , 781 , 3906 , 19531 ,
  97656 , 488281 , 2441406 , 12207031 , 61035156
};

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;

    if( !p )
    {
        out << 1;
        in.close();
        out.close();
        return 0;
    }

    p1 = p;

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

    out << nr;

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

    return 0;
}