Cod sursa(job #417878)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 14 martie 2010 23:26:11
Problema Factorial Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<stdio.h>
#include<math.h>

int put(int x) {
	int k=0;
	while(x%5==0) k++, x/=5; 
	return k;
}

int main() {
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
 
	int r,p,i,t1,t2,k1,k2=0,k;
 
	scanf("%d",&p);
	if(!p) { printf("1\n"); return 0; }
 
	for(i=1; k2<p; i++) {
		k2=(pow(5,i)-1)/4;
		t2=pow(5,i);
	}
 
	if(k2==p) printf("%d\n",t2);
	else {
		t1=t2/5;
		k1=(pow(5,put(t1))-1)/4;
		if(p>(k1+k2)/2) {
			k=t2+5;
			while(k2>=p) k-=5, k2-=put(k);
		}		
		else {
			k=t1;
			while(k1<p) k+=5, k1+=put(k);
		}
	}
  
	printf("%d\n",k);
 
	return 0;
}