题目描述:
给定一个整数 n,返回 n! 结果尾数中零的数量。
示例1:
输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零。
示例2:
输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零.
说明: 你的解法应该为 O(logN) 时间复杂度。
题目分析:
要求末尾有多少个零,则该数应为x*10k 的形式等于x*(2k *5k)
也就是求该数分解质因子后有几个5就行,:如1*2*3*4*5=1*2*3*2*2*5(里面有一个5)所以结果为1个0
详见代码
解答代码:
class Solution { public: int trailingZeroes(int n) { int sum=0; while(n>0){ sum+=n/5; n/=5; } return sum; } };