Pagini recente » Monitorul de evaluare | Cod sursa (job #1172385) | Cod sursa (job #1515014) | Cod sursa (job #2272581) | Cod sursa (job #1803681)
#include <stdio.h>
int n0 ( int n ) {
int s = 0;
while ( n > 0 ) {
s = s + n / 5;
n /= 5;
}
return s;
}
int main () {
FILE *fin, *fout;
fin = fopen ( "fact.in", "r" );
fout = fopen ( "fact.out", "w" );
int n;
fscanf ( fin, "%d", &n );
//printf ( "%d %d %d %d\n", n0 ( 24 ), n0 ( 25 ), n0 ( 26 ), n0 ( 9000 ) );
int a = 0, b = 1000000000, x = ( a + b ) / 2 ;
while ( b - a > 1 && n0 ( x ) != n ) {
//printf ( "%d %d\n", a,b );
x = ( a + b ) / 2;
if ( n0 ( x ) > n ) /// prea mare
b = x;
else if ( n0 ( x ) < n ) /// prea mic
a = x;
}
//printf ( "%d\n", x );
if ( b - a <= 1 )
fprintf ( fout, "-1" );
else if ( n != 0 )
fprintf ( fout, "%d\n", x - x % 5 );
else
fprintf ( fout, "1\n" );
fclose ( fin );
fclose ( fout );
return 0;
}