Cod sursa(job #2025888)

Utilizator blackoddAxinie Razvan blackodd Data 23 septembrie 2017 13:39:29
Problema Factorial Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>

unsigned long long f(unsigned long long val) {
	unsigned long long i = 25, count = 0, p = 1;
	while ( i <= val ) {
		i *= 5;
		count ++;
		p++; 
	}
	return count + val / 5;
}

unsigned long long getN(int p) {
	unsigned long long lo = 1, hi = (1LL << 63), mid = 0, rez = 0, ans = 0;

	while( lo <= hi ) {
		mid = lo + (hi - lo) / 2;

		rez = f(mid);

		if ( rez == p )
			ans = mid;

		if ( rez < p )
			lo = mid + 1;
		else 
			hi = mid - 1;
	}

	return ans;
}

main() {
	freopen("fact.in", "r", stdin);
	freopen("fact.out", "w", stdout);

	int p;
	unsigned long long res;

	scanf("%d", &p);

	res = getN(p);

	printf("%lld", res);

}