LeetCode数学类 16.05-阶层尾数
作者:互联网
题目:设计一个算法,算出 n 阶乘有多少个尾随零。题目链接
一.第个想法
1.就是25有一个零,还有就是10有一个零,计算2、5、 10的个数
2.25有零,但是要5出现后才会出现零,所有可以不管2,看5有多少个和10多少个
然后就写下了下面的代码,最后错了
public int trailingZeroes(int n) {
return n/5;
}
再想了想不知道那出问题了,看了正确解法,知道了问题
问题:2 * 25=100 有两个零 8*125=1000 有三个零
联想到就是5的阶层有关
就写出了以下代码
public int trailingZeroes(int n) {
int t=0;
int y=n;
if(y<5) {
return 0;
}
while(n>=5) {
y=y/5;
t++;
}
return t-1+n/5;
}
还是错,看到测试用例50出差
问题 2 * 50 =100
然后想到75 * 4=300等等 25的整数倍和125的整数倍
而且解决100两个零的问题
public int trailingZeroes(int n) {
int t=0;
while(n>=5) {
t=t+n/5;
n=n/5;
}
return t;
}
然后就成功通过了
标签:25,return,10,尾数,16.05,trailingZeroes,int,100,LeetCode 来源: https://blog.csdn.net/qq_45671761/article/details/113572581