力扣面试16.05.阶乘尾数
int trailingZeroes(int n){
int int sum=1;int cnt=0;
for(int int i=2;i<=n;i++){ //先算n的阶乘
sum*=i;
}
while(sum%10==0){ //算尾位0的个数
cnt++;
sum/=10; //每次去尾位
}return cnt;
}
出错了,常规溢出(溢出指的是算的数大于int所在值的范围内) 注意该题没有规定n的阶乘的大小
正确答案:
int trailingZeroes(int n){ //直接计算是否为5的倍数
int res = 0;
while (n) {
n /= 5;
res += n; //res加上 n/5后的值
}
return res;
}