阶乘问题 - 无幻の编程 - 对于一个初学者来说,野心也是必须的...

阶乘问题

无幻 posted @ 2009年6月08日 02:34 in 算法结构 with tags c++ 数据结构 算法 , 1501 阅读

问题描述:
定义函数Z,对于任何给定的整数N,Z(N)是指以十进制表示的N!的末尾零的个数。这个函数是非递减函数,如果有两个数N1<N2,那么Z(N1)<=Z(N2)。这是因为我们不会在乘上任何一个整数的时候将末尾的零省去,只会得到更多的零。
我们需要一个计算机程序来有效地确定Z的值。
输入
输入的第一行是一个单个的确定的正整数 T。他指明接下来的数字的个数。然后是 T 行,每一行包括一个确定的正整数N,1<=N<=1000000000。
输出
对每一个数字N,产生一行输出包含一个非负整数Z(N)。
输入样例
6
3
60
100
1024
23456
8735373
输出样例
0
14
24
253
5861
2183837
 

 

#include <iostream>
#include <fstream>
using namespace std;

int getZero(int n)
{
        if (n>0 && n<5)
        {
                return 0;
        }
        else
        {
                return (n/5+getZero(n/5));
        }
}
int main()
{
        int number;
        int factorialNumber;
        ifstream cin1("input.txt");
        cin1>>number;
        if (number<0)
        {
                return 0;
        }
        for (int i=0;i<number && !cin1.eof();i++)
        {
                cin1>>factorialNumber;
                if (factorialNumber<1 || factorialNumber>1000000000)
                {
                        cout<<"You put error number! "<<endl;
                }
                else
                {
                        cout<<getZero(factorialNumber)<<endl;
                }              
        }
        return 0;
}

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee