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

<?php
$n = intval(fgets(STDIN));

// 階乗　1*2*3* ...... 100
while ($n !== 0){
    $number = 1;
    $count = 0;
    for ($j = $n; $j >= 1; $j--){
        /*
        12
        $j >= 1
        12
        11
        10
        ... 
        $j-- これで下がる。
        */ 
        $number *= $j;
        // $number = $number * $j;
        while($number % 10 == 0){
            $number /= 10;
            $count++;
        }
        if($number > 100000){
            /*
            230,456,999 / 10000
            = 23,045,6999 floorで切り捨てる。
            = 23,045 * 10000
            = 230,450,000

            230,456,999 - 230,450,000
            = 56,999
            */
            $number = $number - floor($number / 10000) * 10000;
        }
    }
    $n = intval(fgets(STDIN));
    echo $count;
    echo PHP_EOL;
}