leetcode172. 阶乘后的零 | 求n!中因子p的个数
题目描述
思路
1.有多少个零,考虑什么情况产生0;25的时候产生一个0,所以我们只要去统计2的个数和5的个数,取二者最小就可以了
2.进一步考虑到,2的个数一定比5的个数多,所以我们只要去统计5的个数就可以了
3.如何去统计阶乘中5的个数呢?考虑什么时候阶乘中有5,发现51015202530...这些情况会产生5,看下面的分析
代码
class Solution {
public:
int trailingZeroes(int n) {
int cnt = 0;
while(n){
cnt += n/5;
n /= 5;
}
return cnt;
}
};
变形题:求n的阶乘中因子p的个数
int trailingZeroes(int n,int p) {
int cnt = 0;
while(n){
cnt += n/p;
n /= p;
}
return cnt;
}