有没有有效的方法来计算n末尾的零数!没有明确需要计算n!?
答案 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