题目:
给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
下面这段代码超时。
这段是我自己写的开始用int 然后范围不够用,
我又找到java里的BigInteger ,
我寻思这下范围够了,没想到超时了哈哈。
public static int TrailingZeroes(int n)
{
System.Numerics.BigInteger b = 1;
for (int i = 1; i < n+1; i++)
{
b *= i;
}
string c = b.ToString();
int d = 0;
for (int i = c.Length-1; i > 0; i--)
{
if (c[i] == '0')
{
d++;
}
else
{
return d;
}
}
return d;
}
我看题解他们都找5的个数,后来一想对啊,(自己)真笨
下面代码是正解,不超时的
public int TrailingZeroes(int n) {
var total = 0;
while (n >= 5)
{
n /= 5;
total += n;
}
return total;
}