Cod sursa(job #92847)

Utilizator tvladTataranu Vlad tvlad Data 16 octombrie 2007 19:17:05
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>

int f ( int x ) {
	int s = 0;
	for (int a = x; a > 0; a /= 5) {
		s += a/5;
	}
	return s;
}

int bsearch ( int val )
{
	int step, i;
	const int N = 0x3f3f3f3f;
	for (step = 1; step < N; step <<= 1);
	for (i = 0; step; step >>= 1) {
		int x = f(i+step);
		if (i + step < N && (x < val || (x == val && f(i+step-1) != val)))
			i += step;
	}
	return i;
}

int main() {
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	
	int p;
	scanf("%d",&p);
//for (p = 0; p<100; ++p) {
	if (p == 0)
		printf("0\n");
	else {
		int x = bsearch(p);
		if (f(x) == p) printf("%d\n",x); else printf("-1\n");
	}
//}
	return 0;
}