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 JAVA (judge verdict: Time Limit Exceeded)

import java.util.Scanner;
import java.math.BigDecimal;

public class Main{
	public Main(){
		Scanner sc = new Scanner(System.in);
		
		while(true){
			int n = sc.nextInt();
			if(n == 0){
				break;
			}
			int c = 0;
			String str = String.valueOf(n);
			
			BigDecimal bd = new BigDecimal(str);
			for(int i = n-1, j = 0; i > 1; i--){
				str = String.valueOf(i);
				if(i % 10 == 0){
					for(j = str.length()-1; str.substring(j, j+1).equals("0");c++, j--);
					str = str.substring(0, j+1);
				}
				bd = bd.multiply(new BigDecimal(str));
			}
			str = bd.toString();
			
			for(int i = str.length()-1; str.substring(i, i+1).equals("0"); c++, i--);
			
			System.out.println(Integer.toString(c));
		}
	}

	public static void main(String[] args){
		new Main();
	}
}