Cod sursa(job #21066)

Utilizator swift90Ionut Bogdanescu swift90 Data 22 februarie 2007 21:16:17
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
int main(){
	FILE*in=fopen("fact.in","r");
	FILE*out=fopen("fact.out","w");
	int ap,s=0,p=1,n=5,n1,put=0;
	fscanf(in,"%d",&ap);
	if(ap==0){
		fprintf(out,"1\n");
		return 0;
	}
	while(p<ap){
		p=p*5+1;
		n=n*5;
		put++;
	}
	if(p==ap){
		fprintf(out,"%d\n",n);
		return 0;
	}
	if((ap<p)&&(ap>p-put)){
		fprintf(out,"-1\n");
		return 0;
	}
	
	n1=n;
	n=n/5;
	s=(p-1)/5;
	while(p>6){
		p=(p-1)/5;
		n1=n1/5;
		put--;
		if((ap-s)/p){
			n=n+((ap-s)/p)*n1;
			s=s+((ap-s)/p)*p;
		}
	}
	while(s<ap){
		n=n+5;
		n1=n;
		while((n1%5==0)&&(n1!=0)){
			n1=n1/5;
			s++;
		}
	}
	if(s==ap)
		fprintf(out,"%d\n",n);
	if(s>ap)
		fprintf(out,"-1\n");
	return 0;
}