Cod sursa(job #51831)

Utilizator MirageRobert Sandu Mirage Data 16 aprilie 2007 22:13:54
Problema Factorial Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>
int main () {
	int k,i,nr0=0,c1,c2,nr=1,a;
	FILE *in=fopen("fact.in","r"), *out=fopen("fact.out","w");
	fscanf(in,"%d",&k);
	if(k==0){
		fprintf(out,"1\n");
		return 0;
	}
	for(i=5;nr0<k;i*=5){
		nr0+=nr;
		nr*=5;
	}
	if(nr0==k){
		fprintf(out,"%d\n",i/5);
		return 0;
	}
	c1=i/5;
	while(nr0>k){
		c2=c1;
		while(c2%5==0){
			nr0--;
			c2/=5;
		}
		a=c1;
		c1-=25;
		nr0-=4;
	}
	if(nr0==k){
		fprintf(out,"%d\n",c1);
		return 0;
	}
	else
		while(nr0<k&&c1<a-5){
			c1+=5;
			nr0++;
		}
	if(nr0==k)
		fprintf(out,"%d\n",c1);
	else
		fprintf(out,"-1\n");
	fclose(in);
	fclose(out);
	return 0;
}