Cod sursa(job #201089)

Utilizator pitbullpitbulll pitbull Data 29 iulie 2008 00:55:28
Problema Factorial Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>

#define in_file "fact.in"
#define out_file "fact.out"

int n,res;

int nr_div(int n,int div){
	int nr=0;
	while(n%div==0){
		n/=div;
		nr++;
	}
	return nr;
}

int nr_zerouri(int n){
	int nr2=0,nr5=0,res=0,i=0;
	for (i=2;i<=n;i++){
		nr2+=nr_div(i,2);
		nr5+=nr_div(i,5);
	}
	res=nr2<nr5?nr2:nr5; 
	return res;
}

int find(int n){
	int nrz,low=1,high=10000,mid=0;
	while(low<=high){
		mid=low+(high-low)/2;
		nrz=nr_zerouri(mid);
		if(nrz==n){
			while(nr_zerouri(mid-1)==nrz)
				mid--;
			return mid;
		}
		else if(nrz<n)
			low=mid+1;
		else
			high=mid-1;
	}
	return -1;
}

int main (){
	FILE *f=fopen(in_file,"rt");
	fscanf(f,"%d",&n);
	fclose(f);
	
	res=find(n);
	
	
	FILE *g=fopen(out_file,"wt");
	fprintf(g,"%d",res);
	fclose(g);
	return 0;
}