首页 > 试题广场 >

阶乘尾零

[编程题]阶乘尾零
  • 热度指数:7527 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

给定一个int n,返回n的阶乘的末尾连续的零的个数。保证n为正整数。

测试样例:
5
返回:1
推荐
1、把n! 分解成若干个素数相乘,只有 2*5 才可能产生尾随零,而2 的数量多于5,所以问题转化为计算有多少个5.

2、先数一数1到n之间有几个5的倍数(数量为n/5),然后数有几个25的倍数(数量为n/25),依次类推。

 publicintgetFactorSuffixZero(intn) {      if(n<5)        return0;    intcount =0;    for(inti=5;n/i>0;i*=5)        count+=n/i;    returncount;    }

编辑于 2015-08-18 18:24:44 回复(3)

python solution:



class Factor:
    def getFactorSuffixZero(self, n):

        res = 0
        for i in range(1,n+1):
            while i%5 == 0:
                i = i//5
                   res += 1
        return res
发表于 2017-10-16 12:17:56 回复(0)