在n中找到最后的零个数!

时间:2011-03-22 12:31:43

标签: c++ c factorial

有没有有效的方法来计算n末尾的零数!没有明确需要计算n!?

3 个答案:

答案 0 :(得分:5)

是的。关键思想:(1)它与分割n的最高幂5相同; (2)这是5到n的倍数,再加上25到n的倍数加上125到n的倍数等等。

但这不属于Stack Overflow。

答案 1 :(得分: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++;
    }

答案 2 :(得分: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