0

是否有任何有效的方法来计算 n 末尾的零个数!无需明确计算 n!?

4

3 回答 3

5

就在这里。关键思想:(1)它与 5 的最高幂相同,除以 n!;(2) 即 5 到 n 的倍数,加上 25 到 n 的倍数,再加上 125 到 n 的倍数,等等。

但这不属于 Stack Overflow。

于 2011-03-22T12:34:25.460 回答
3

N! 末尾的零个数!是(谁)给的

∑ floor( n/5 i ) 对于 i = 1,2,3....

C中的简单代码

    i = 1, sum = 0;
    while(pow(5,i)<= n)
    {
        sum += n/(pow(5,i));
        i++;
    }
于 2011-03-22T12:34:03.420 回答
2

n! 的十进制表示中的零个数!是十作为那个大数的一个因素出现的次数。因此,出现 2x5 的次数。因此,由于 2 作为因数出现的次数要比 5 多得多(为什么?),所以 5 是 n! 的因数的次数。

所以,你的面试问题是:有多少个五作为项目的因素出现在表达式中

1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x ... x (n-1) x n

?

于 2011-03-22T12:38:47.657 回答