Cod sursa(job #114037)

Utilizator the_chosen_oneCristian Badea the_chosen_one Data 12 decembrie 2007 15:13:22
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>
int a[113],b[113],p,m;
void init(int p){
	a[0]=5;
	b[0]=1;
	for(m=1;b[m]<=p;m++){
		a[m]=a[m-1]*5;
		b[m]=a[m-1]+b[m-1];
	}
}
int caut(int x){
	int p=0,u=m,mm;
	while(p<u){
		mm=(p+u)>>1;
		if(x<=b[mm])
			u=mm;
		else
			p=m+1;
	}
	if(b[p]>x)
		--p;
	return p;
}	
int calcul(int p){
	int s=0,poz;
	while(p){
		poz=caut(p);
		s+=p/b[poz]*a[poz];
		p%=b[poz];
	}
	return s;
}
int main(){
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	int p;
	scanf("%d",&p);
	init(p);
	/*
	for(int i=1;i<=p;++i)
		printf("%d,%d,%d",i,a[i],b[i])*/
	int x=calcul(p),y=calcul(p+1);
	if(x==y)
		printf("-1\n");
	else
		printf("%d\n",x);
	fclose(stdin);
	fclose(stdout);
	fclose(stdin);
	fclose(stdout);
	return 0;
}