Pagini recente » Cod sursa (job #2381991) | Cod sursa (job #3238871) | Cod sursa (job #1988648) | Cod sursa (job #1011081) | Cod sursa (job #326553)
Cod sursa(job #326553)
// http://mathworld.wolfram.com/Factorial.html -- numarul de zerouri pentru n!
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define in "fact.in"
#define out "fact.out"
#define NMAX (1<<30)
long int nr( long int x )
{
int nrsol = 0, k;
for ( k = 5; k <= x; )
{
nrsol += (x/k);
k *= 5;
}
return nrsol;
}
long int bl, bm, br;
long int S, P, last;
int main ( void )
{
freopen ( in, "r", stdin );
freopen ( out, "w", stdout );
scanf ( "%ld", &P );
last = -1;
for ( bl = 1, br = NMAX; bl <= br; )
{
bm = bl + ((br-bl)>>1);
S = nr(bm);
if ( S == P ) { last = bm; br = bm-1; }
else if ( S < P ) bl = bm+1;
else br = bm-1;
}
printf ( "%ld\n", last == -1 ? -1 : last );
return 0;
}