Cod sursa(job #531627)

Utilizator popacamilpopa camil popacamil Data 9 februarie 2011 23:07:32
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<cstdio>
using namespace std;
long long int p,st,dr,mij,a;
long long int f(long long int n){
	long long int x=1,i,nr=0;
	for(i=1;i<=13;++i){
		x*=5;
		nr+=n/x;
	}
	return nr;
}
int main(){
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	scanf("%lld\n",&p);
	dr=5000000000LL;
	while(st<=dr){
		mij=st+(dr-st)/2;
		if(f(mij)<=p){
			st=mij+1;
		}
		if(f(mij)>=p){
			dr=mij-1;
		}
	}
	mij=st+(dr-st)/2;
	if(f(mij)==p){
		a=mij;
		while (a%5!=0){
			--a;
		}
	}
	else {
		a=-1;
	}
	if(p==0){
		a=1;
	}
	printf("%lld\n",a);
	return 0;
}