Cod sursa(job #346901)

Utilizator mihai_r2005Richard Mihai Andrei mihai_r2005 Data 10 septembrie 2009 01:04:05
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <iostream.h>
#include <fstream.h>

long i, p, a, b, m, vm;

int v(int i)
{
	int val = i;
	while (i > 0){
		i /= 5;
		val += i;
	}
	return val;
}

int main()
{
	ifstream fi("fact.in");
	ofstream fo("fact.out");
	fi>>p;
	if (p == 0){
		fo<<"1";
		return 0;
	}
	a = 1;
	b = 1000000000;
	while ( 1 ){
		if (b - a == 1){
			if (p == v(a)){
				fo << a*5;
				return 0;
			}
			else if (p == v(b)){
				fo << b*5;
				return 0;
			}
			else 
				break;
		}
		m = ( a + b ) / 2;
		vm = v( m );
		if ( p == vm ){
			fo << m*5;
			return 0;
		}
		else if ( vm < p )
			a = m;
		else 
			b = m;
	}
	fo<<"-1";
	return 0;
}