Cod sursa(job #700827)

Utilizator ephgstefana gal ephg Data 1 martie 2012 12:11:40
Problema Factorial Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>
int p5[50],a[50],dim;
int main () {
	int n,i,c=0,vc,uv,j;
	
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	scanf("%d",&n);
	if(n==0){
		printf("1");
		return 0;
	}
	for(i=1;i<=14;++i){
		if(dim==0)p5[++dim]=5;
		else {
			if((dim+1)%2==0)p5[++dim]=p5[dim/2]*p5[dim/2];
			else p5[++dim]=p5[dim/2]*p5[dim/2]*5;
		}
		
	}
	
	//for(i=1;i<=25;++i)fprintf(stderr,"%d ",p5[i]);
	a[1]=1;
	for(i=2;i<=dim;++i)a[i]=a[i-1]*5+1;
	for(i=1;p5[i]<=n;++i){}
	c=a[i-1];
	
	for(j=p5[i-1]+5;c<n;j+=5){
		uv=j;
		vc=1;
		for(;uv%p5[vc]==0;)++vc;
		--vc;
		c+=vc;
		
	}
	if(c==a[i-1]){
		printf("%d",p5[i-1]);
		return 0;
	}
	if(c!=n){
		printf("-1");
		return 0;
	}
	printf("%d",uv);
	return 0;
}