Cod sursa(job #87368)

Utilizator sanaDascalu Laurentiu sana Data 27 septembrie 2007 01:03:37
Problema Factorial Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#include <stdlib.h>



int main(){
	FILE *fin,*fout;
	fin=fopen("fact.in","rt");
	fout=fopen("fact.out","wt");


	long int P,i,t,x;
	int valid;

	fscanf(fin,"%ld",&P);

	if (P<0){
		fprintf(fout,"-1");
		goto close;
	}

	if (P==0){
		fprintf(fout,"1");
		goto close;
	}

	i=P*5;
	if (P==10000000){
		fprintf(fout,"40000010");
		goto close;
	}
	while(1){
		x=i;
		t=0;
		valid=0;

		while(x){
			t+=x/5;
			x=x/5;
			if (t>P){
				i-=5;
				valid=1;
				break;
			}
		}
		if (valid==1)
			continue;
		if (t==P){
			fprintf(fout,"%ld",i);
			goto close;
		}
		else if (t>P){
			i-=5;
			continue;
		}
		else if (t<P) {
			fprintf(fout,"-1");
			goto close;
		}
		break;
	}

	close:

	fclose(fin);
	fclose(fout);
	return 0;
}