是否有任何有效的方法来计算 n 末尾的零个数!无需明确计算 n!?
问问题
2626 次
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 回答