Cod sursa(job #365906)

Utilizator vladiiIonescu Vlad vladii Data 20 noiembrie 2009 10:37:29
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
using namespace std;

long long int v[]={5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125, 244140625};
int len=12;
long long int p;

long long int returnputere(long long int n) {
	long long int j=0, i;
	for(i=0; i<len; i++) {
		j+=(int)(n/v[i]);
	}
	return j;
}

long long int cautabinar(long long int val, long long int st, long long int dr) {
	while(st<dr) {
		long long int mij=st+(dr-st)/2;
		long long int q=returnputere(mij);
		if(q==val) { return mij; }
		else if(q<val) { st=mij+1; }
		else if(q>val) { dr=mij-1; }
	}
	return -1;
}

int main() {
	long long int i;
	fstream f1, f2;
	f1.open("fact.in", ios::in);
	f1>>p;
	f1.close();
	i=cautabinar(p, 1, 999999999);
	f2.open("fact.out", ios::out);
	if(i==-1) { f2<<-1<<endl; }
	else { f2<<i-i%5<<endl; }
	f2.close();
	//getch();
	return 0;
}