Cod sursa(job #20993)

Utilizator swift90Ionut Bogdanescu swift90 Data 22 februarie 2007 19:20:44
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 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=1;
	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(s!=ap){
		p=(p-1)/5;
		n1=n1/5;
		put--;
		if(p>1){
			if((ap-s)/p){
				n=n+((ap-s)/p)*n1;
				s=s+((ap-s)/p)*p;
			}
		}
		if(p==1){
			n=n+n1*(ap-s);
			s=s+(ap-s);
		}
	}
	fprintf(out,"%d\n",n);
	
	return 0;
}