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)

import scala.io.StdIn.readInt

object Main {
  def pow(x:Long, y:Long):Long = {
    def pow2(m:Long, n:Long, odd:Long, b:Long):Long = {
      n match {
        case 0 => 1
        case 1 => m*odd
        case _ =>
          pow2(m*m, n/2, (if(n%2==1) odd*b else odd), b*b)
      }
    }
    pow2(x, y, 1, x)
  }

  def getZeros(n:Long,ct:Long,i:Long):Long = {
    val d = n/pow(5,i)
    if(d>0) getZeros(n,d+ct,i+1) else ct
  }

  def main(args:Array[String]) = {
    var n = 0;
    while( {n=readInt;n}!= 0 )
      println(getZeros(n,0,1))
  }
}