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 Scala (judge verdict: Accepted)

object Main {
    val div_2 = Array.ofDim[Int](20001)
    val div_5 = Array.ofDim[Int](20001)
    for(i <- 2 to 20000) {
        div_2(i) = div_2(i - 1) + div_k(2, i)
        div_5(i) = div_5(i - 1) + div_k(5, i)
    }

    def div_k(k: Int, n: Int): Int = {
        var c = 0
        var i = n
        while(i % k == 0) {
            i /= k
            c += 1
        }
        c
    }
    def main(args:Array[String]) = {
        val sc = new java.util.Scanner(System.in)
        var n = sc.nextInt
        while (n != 0) {
            println(div_2(n) min div_5(n))
            n = sc.nextInt
        }
    }
}