【题目描述】输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n =10; n! = 3628800,所以答案为2
输入描述:
输入一行,n(1<=n<=1000)
输出描述:
输出一个整数,即题目所求
输入例子:
10
输出:
2
题目分析:
由于0的来源是2 和5 ,但是在所有的数中以2为因数的数较多,所有在这里我们只需要考虑因子5的个数就行。
错误分析:不能以10为基准进行考虑,因为存在25中有2个因子5
方法一:
public int trailingZeroes(int n) {
int count=0;
while(n!=0){
count+=n/5;
n=n/5;
}
return count;
}
方法一:
public long trailingZeros(long n) {
// write your code here
long count = 0;
long number= 25;
for (long temp = 5; temp <= n; temp+=5) {
count++;
number= 25;
// 判断是不是25、125、625...的倍数,并根据每次pwr的变化进行+1操作
while (temp % number== 0) {
count++;
number*= 5;
}
}
return count;
}
网友评论