阶乘问题 - 无幻の编程 - 对于一个初学者来说,野心也是必须的...
阶乘问题
问题描述:
定义函数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;
}
#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;
}