Cod sursa(job #399426)

Utilizator nandoLicker Nandor nando Data 20 februarie 2010 14:43:56
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>
#include <iostream>

using namespace std;

unsigned nr5(unsigned a){
	unsigned k=0,p=5;
	for(unsigned i=5;i<=a;i*=5){
		k+=a/i;
	}
	return k;
}

int main(){
	fstream fin("fact.in",ios::in);
	fstream fout("fact.out",ios::out);
	unsigned beg=0,end=4000000000,mdl,p;
	int res=-1;
	fin>>p;
	if(p==0){
		fout<<1;
	}else{
		while(beg<=end){
			unsigned mdl=beg+(end-beg)/2;
			unsigned n5=nr5(mdl);
			if(n5<p){
				beg=mdl+2;
			}else if(n5>p){	
				end=mdl-1;
			}else{
				res=mdl;
				break;
			}
		}
		if(res!=-1){
			fout<<(res/5)*5;
		}else{
			fout<<-1;	
		}
	}
	fin.close();
	fout.close();
	return 0;
}