阶乘结果末尾有多少零

Time Limit: 1 Seconds     Memory Limit: 32768 K

Total Submit:594     Accepted:314


Description

1000的阶乘1*2*3*...*1000结果是一个很大的数,求这么大的数末尾有多少个连续的零。

Input

本题有多组测试数据,每组测试数据占一行。

每组数据含有一个正整数N。(N不大于1000000)

N=-1结束。

Output

输出一个整数,表示N!的末尾有多少个连续的零。

Sample Input

 

1
5
1000

 

Sample Output

 

0
1
249

 

 

解题:

        当0 < n < 5时,f(n!) = 0;

        当n >= 5时,f(n!) = k + f(k!), 其中 k = n / 5(取整)。
#include <iostream> using namespace std; int getZero(int n) { if (n>0 && n<5) { return 0; } else { return (n/5+getZero(n/5)); } } int main() { int N; while(cin>>N && N!=-1) { cout<<getZero(N)<<endl; } return 0; }