Cod sursa(job #146826)

Utilizator Matei14Popa-Matei Mihai Matei14 Data 2 martie 2008 11:20:55
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>
#define N 10000
int n,p,x[N],v[N],i,j,nr,q1=0,q2=0,s1=0,s2=0;;
void rez(){
	x[0]=1;
	v[0]=5;
	nr=0;
	for(int i=0;x[i]<p;++i){
		x[i+1]=x[i]+v[i];
		v[i+1]=v[i]*5;
		nr++;
	}
}
void solv(){
	int o=p;
	i=nr;
	while(o){
		if(x[i]<=o)
			s1+=((o/x[i])*v[i]);
		o%=x[i--];
	}
	for(i=0;i<nr;++i)
		q1+=s1/v[i];
	i=nr;
	o=p+1;
	while(o){
		if(x[i]<=o)
			s2+=((o/x[i])*v[i]);
		o%=x[i--];
	}
	for(i=0;i<nr;++i)
		q2+=s2/v[i];
}
int main(){
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	scanf("%d",&p);
	if(p==0)
		printf("1");
	else
		if(p==1)
			printf("5");
	else{
		rez();
		solv();
		if(q1==q2)
			printf("-1");
		else
			printf("%d\n",s1);
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}