Cod sursa(job #12702)

Utilizator OnerinCiobanescu Adina Onerin Data 4 februarie 2007 17:31:04
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<stdio.h>

void compl(long v[],long k,long p){
     long c=0;
     for(long i=1;i<=p;i++){
	if(i%k==0) c=i/k;
	v[i]=v[i]+c;
     }
}

long cautbin(long v[],long p){
	long s,d,m;
	int este=0;
	s=1;
	d=p;
	while((s<=d)&&(!este)){
		m=(s+d)/2;
		if(p==v[m]) este=1;
		else{
			if(p<v[m]) d=m-1;
			else s=m+1;
		}
	}
	if(este) return m*5;
	return -1;
}



int main(){
	FILE *f1,*f2;
	f1=fopen("fact.in","r");
	long p,i,v[1000],k;
	fscanf(f1,"%ld",&p);
	f2=fopen("fact.out","w");
	if(p==0)     fprintf(f2,"1");
	else{
	   for(i=1;i<=p;i++)
		v[i]=i;
	   k=5;
	   while(k<=p){
		compl(v,k,p);
		k*=5; }
	   i=cautbin(v,p);
	   fprintf(f2,"%ld",i);
	}
	fprintf(f2,"\n");
	fclose(f1);
	fclose(f2);
	return 0;
}