题意:给你一个数n,输出n的阶乘n!尾端0的个数。
解题思路:阶乘结果末端的0是由5 * 2、5 * 4、5 * 偶数和10、20、30... 100、200...1000等末尾含0的乘数构成。
其实10也是由5 * 2构成,20是由5 * 4构成,其实末尾含0的数也是由5通过与其他数的乘积构成,所以n!中1个因子5对应一个0.
但n!中有些因数含有多个5因子,例如25含有2个5因子,125含有3个5因子。
所以求n!结果尾端0的个数,就是求1——n中所有数含有因子5的个数。
class Solution {
public:
int trailingZeroes(int n) {
return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5);
}
};
网友评论