Problem:
階乗 II

n! = n × (n − 1) × (n − 2) × ... × 3 × 2 × 1

を n の階乗といいます。例えば、12 の階乗は

12! = 12 × 11 × 10 × 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 × 1 = 479001600

となり、末尾に 0 が 2 つ連続して並んでいます。

整数 n を入力して、n! の末尾に連続して並んでいる 0 の数を出力するプログラムを作成してください。ただし、n は 20000 以下の正の整数とします。

Input

複数のデータが与えられます。各データに n (n ≤ 20000) が１行に与えられます。n が 0 の時入力の最後とします。

データの数は 20 を超えません。

Output

各データに対して n! の末尾に連続して並んでいる 0 の数を１行に出力して下さい。

Sample Input

2
12
10000
0

Output for the Sample Input

0
2
2499

Solution in C (judge verdict: Time Limit Exceeded)

#include<stdio.h>
unsigned long long int func_factorial(unsigned long long int n[],int k_counter){
	unsigned long long int tmp,x;
	tmp=n[k_counter];
	int i;
	for(i=1,x=1;i<=tmp;i++){
		x=x*i;
	}
	return x;
}
main(){
	unsigned long long int n[1000];
	int i_counter;
	while(1){
		scanf("%llu",&n[i_counter]);
		if(n[i_counter]==0){
			break;
		}
		i_counter++;
	}
	unsigned long long int factorial[1000];
	int j_counter;
	for(j_counter=0;j_counter<i_counter;j_counter++){
		factorial[j_counter]=func_factorial(n,j_counter);
	}
	i_counter=0;
	int counter[1000],k_counter;
	for(k_counter=0;k_counter<j_counter;k_counter++){
		while(1){
			if((factorial[k_counter]%10)!=0){
				break;
			}
			factorial[k_counter]=factorial[k_counter]/10;
			counter[k_counter]=i_counter;
			i_counter++;
		}
	}
	for(i_counter=0;i_counter<j_counter;i_counter++){
		printf("%d\n",counter[i_counter]);
	}
	return 0;
}