我独自leetcode
172. Factorial Trailing Zeros
给一个整数n,请回传n!的trailing zeros的数目
思路 :
这题就纯粹的数学题目
你要求一个整数后面有几个0,就是去把它进行质因子分解
去看有几个5*2就有几个0
而这题的整数是n!,质因子分解后2的数目一定会比5多
所以你去求有几个5就好
问题变成n!质因子分解后有几个5?
稍微想一下就可以知道
只要是5的倍数就有1个5、25的倍数有2个5,以此类推5^x会有x个5
n/5->有几个5的倍数、n/25->有几个25的倍数.....
就这样一直到n=0,就可以求出答案了
C Code
int trailingZeroes(int n) {
int ans=0;
while(n!=0){
ans+=n/5;
n/=5;
}
return ans;
}