Cod sursa(job #2277922)

Utilizator livliviLivia Magureanu livlivi Data 7 noiembrie 2018 01:16:06
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<fstream>
#define P 61
#define MULT (long long)(1e18 + 1)
using namespace std;

ifstream cin("fact.in");
ofstream cout("fact.out");

long long no_zero(long long n){
	long long ans = 0;
	long long pow5 = 1;

	while(n / 5 >= pow5){
		pow5 *= 5;
		ans += (n / pow5);

		if (ans > MULT || ans < 0) return MULT;
	}

	return ans;
}

long long binary_search(long long k){
	long long ans = 0;
	long long p = (1LL << P);

	while(p > 0){
		if (ans + p > 0 && no_zero(ans + p) < k) ans += p;
		p /= 2;
	}

	if (no_zero(ans + 1) == k) return ans + 1;
	else return -1;
}

int main(){
	long long p;
	cin>>p;

	cout<<binary_search(p)<<endl;
	return 0;
}