Cod sursa(job #530831)

Utilizator david_raucaRauca Ioan David david_rauca Data 8 februarie 2011 15:33:54
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<fstream>
using namespace std;

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

#define INF 1000000000000000000LL

long long p;
long long rasp;

void Search(long long st, long long dr );
int OK( long long x );

int main()
{
    fin >> p;
    /*
    if( p == 1 )
        fout << -1;
    */
    rasp = 0;
    
    Search( 1, INF );
    
    fin.close();
    fout.close();
    
    return 0;
}

void Search( long long st, long long dr )
{
     if( st >= dr )
     {
         if( rasp != 0 )
             fout << rasp;
         else
             fout << -1;
         exit(0);
     }
     
     long long mij = (st + dr) / 2;
     
     int rez = OK( mij );
     
     if( rez == 0 )
         Search(st, mij);
     if( rez == 1 )
         Search( mij+1, dr);
     if( rez == -1 )
         Search( st, mij );
} 

int OK( long long x )
{
     long long nr0 = 0;
     long long aux;
     aux = x;
     while( aux / 5 >= 1 )
     {
            nr0 += aux/5;
            aux = aux/5;
     }
     //fout << nr0 << ' ';
     if( nr0 == p )
     {
         rasp = x;
         return 0;
     }
     if( nr0 > p )
         return -1;
     if( nr0 < p )
         return 1;
}