给定一个整数n,n的阶乘n,末尾有多少个0

 我来答
xiangjuan314
2016-04-24 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2782万
展开全部
解法一:算法比较简单,就是直接计算阶乘的里面的每一个元素包含5的个数
public static int countZeroNum1(int N){
int num = 0;
for (int i = 1; i <= N; i++) {
int j = i;
while(j%5==0) {
num++;
j/=5;
}
}
return num;
}
解法二:公式 Z=[N/5] + [N/5^2]+ ...该公式的[N/5]含义是在不大于N的阶乘中包含一个5的个数,就比如40里面,包含一个5的个数为5,10,15,20,..40 即 40/5=8个(里面有8个元素包含一个5),那当我们遇到类似于元素为25时,里面有5*5时,即里面有两个5,所以就用[N/5^2]算出包含两个5时的个数,类似这样的运算,当5^k>N时,停止
public static int countZeroNum2(int N) {
int num = 0;
while(N > 0) {
num += (N/5);
N /= 5;
}
return num;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式