Pagini recente » Borderou de evaluare (job #267086) | Borderou de evaluare (job #2494967) | Borderou de evaluare (job #563574) | Borderou de evaluare (job #2080637) | Cod sursa (job #2664599)
#include <stdio.h>
#include <stdlib.h>
#define MAXP 100000000
int val( int n ) {
int cnt, p5;
p5 = 5;
cnt = 0;
while( p5 <= n ) {
cnt += ( n / p5 );
p5 *= 5;
}
return cnt;
}
int main() {
FILE *fin, *fout;
int p, st, dr, mijl;
fin = fopen( "factorial.in", "r" );
fscanf( fin, "%d", &p );
fclose( fin );
st = 0;
dr = MAXP - 1;
while( dr - st > 1 ) {
mijl = ( st + dr ) / 2;
if( val( mijl ) >= p )
dr = mijl;
else
st = mijl;
}
fout = fopen( "factorial.out", "w" );
if( p == val( dr ) )
fprintf( fout, "%d\n", dr );
else
fprintf( fout, "-1\n" );
fclose( fout );
return 0;
}