Cod sursa(job #50276)

Utilizator FlorianFlorian Marcu Florian Data 7 aprilie 2007 13:27:22
Problema Factorial Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#define MAX       2000000000
int nrz( long c )
{
     long p = 0;
     while( c )
     {
            p += c/5;
            c /= 5;
     }
     return p;
}

int main()
{
    long p;
     long st = 0;
    long dr = MAX;
    long n = 1;
    long numarz;
    long c;
    freopen( "fact.in", "rt", stdin );
	     scanf( "%ld", &p );
    fclose( stdin );

    while( n )
    {
	   c = ( st + dr ) /2;
	   numarz = nrz( c );
	   if (numarz == p &&st==dr)
	       {
		       n = st;
		       break;
	       }
	   if( dr < st )
	       {
		 n =-1;
		 break;
	       }
	   if( numarz < p ) st = c+1;
	   else dr = c-1;
    }
    if( n != -1 ) while( n%5 != 0 ) n--;

    freopen( "fact.out", "wt", stdout );
	     printf( "%ld\n", n );
    fclose( stdout );
    return 0;
}