Cod sursa(job #988063)

Utilizator meehighStancu Mihai meehigh Data 21 august 2013 22:20:49
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <fstream>

using namespace std;

int main(){

	ifstream fin("fact.in");
	ofstream fout("fact.out");

	int p;
	fin >> p;
	fin.close();
	
	int pow[14];
	pow[0] = 1;
	for (int i=1; i<14; i++)
		pow[i] = pow[i-1] * 5; 

	int a,b,n,r,t,i;
	
	a = 1;
	b = 2147483646;
	
	while (a != b){
		n = (a+b)/2;

		r = 0;
		i = 1;
		do{
			t = n/pow[i++];
			r = r + t;
		} while (t>0);

		if (r==p) break;
		else if (r>p) b = n;
		else a = n+1;
	}

	if (r == p){
		int d = n % 10;
		if (d<5) 
			if (n<5) n = 1;
			else n = n - d;
		else n = n - d + 5;
	}
	else n = -1;

	fout << n;
	fout.close();

	return 0;
}