Cod sursa(job #788901)

Utilizator dogDaysAreOverAndreea Gheorghe dogDaysAreOver Data 16 septembrie 2012 01:38:25
Problema Factorial Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <cmath>

#define inputFile "fact.in"
#define outputFile "fact.out"
#define MAX 16000

using namespace std;

int p, n;

int countZ( int end){
	int res = 0;
	int localMax = log2(end)/log2(5);

	for(int k=1; k<=localMax; k++){
		res += (floor)((long double) end / pow((double) 5, (double) k));
	}

	return res;
}

int main(){
	ifstream in(inputFile);
	in>>p ;

	int countDigits = 0;
	int tmp;
	int count = 0;

	int start = 0;
	int end = MAX;


	ofstream output;
	output.open(outputFile);
	int res;

	while(start < end){
		int mid = (start + end)/2;
		res = countZ( mid) ;

		if(res >= p)
			end = mid;
		else
			start = mid +1;
	}

	if(countZ(start) != p)
		start = -1;

	output << start << endl;
	output.close();
}