其他分享
首页 > 其他分享> > LeetCode数学类 16.05-阶层尾数

LeetCode数学类 16.05-阶层尾数

作者:互联网

题目:设计一个算法,算出 n 阶乘有多少个尾随零。题目链接

一.第个想法

1.就是25有一个零,还有就是10有一个零,计算2、5、 10的个数
2.2
5有零,但是要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