Cod sursa(job #1855616)

Utilizator mouse_wirelessMouse Wireless mouse_wireless Data 23 ianuarie 2017 20:06:45
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <vector>
#include <cstring>
#include <cctype>
#include <algorithm>
using namespace std;
typedef long long LL;

#ifdef INFOARENA
#define ProblemName "fact"
#endif

#define MCONCAT(A, B) A B
#ifdef ProblemName
#define InFile MCONCAT(ProblemName, ".in")
#define OuFile MCONCAT(ProblemName, ".out")
#else
#define InFile "fis.in"
#define OuFile "fis.out"
#endif

int lastDigit(int N) {
	LL p = 5;
	int ans = 0;
	while (p <= (LL)N) {
		ans += (int)(N / p);
		p *= 5;
	}
	return ans;
}

int binSrch(int P) {
	int left = 1, right = 10 * P, found = 1;
	while (left <= right) {
		int mid = left + (right - left) / 2;
		int ncif = lastDigit(mid);
		if (ncif >= P) {
			right = mid - 1;
			if (ncif == P)
				found = mid;
		}
		else left = mid + 1;
	}
	return found;
}

int main() {
	assert(freopen(InFile, "r", stdin));
	assert(freopen(OuFile, "w", stdout));
	int p;
	scanf("%d", &p);
	printf("%d\n", binSrch(p));
	return 0;
}