Number of trailing zeros of N!
创建时间: November 8, 2021 3:22 PM
最后编辑时间: November 8, 2021 3:33 PM
标签: 数学
状态: 已完成
等级: 5 kyu
网址: https://www.codewars.com/kata/52f787eb172a8b4ae1000a34/train/java
Details
Write a program that will calculate the number of trailing zeros in a factorial of a given number.
编写一个程序,计算给定数字的阶乘中尾随零的个数
补充
N的阶乘:
N
!
=
1
∗
2
∗
3
∗
…
∗
N
N! = 1 * 2 * 3 * … * N
N!=1∗2∗3∗…∗N
尾随零(trailing zeros ):数字末尾0的个数,如20200的尾随零为2。
Examples
zeros(6) = 1
# 6! = 1 * 2 * 3 * 4 * 5 * 6 = 720 --> 1 trailing zerozeros(12) = 2
# 12! = 479001600 --> 2 trailing zeros
提示:不要计算阶乘,寻找其他办法。
解法
我的解法
不断除以5,相当于分解出阶乘中的5,直至分解不出5来
public class Solution {
public static int zeros(int n) {
// your beatiful code here
int ret=0;//存放结果
while(n>0){
n/=5;
ret+=n;
}
return ret;
}
}
优秀解法
思路相同,使用递归,简化代码
public class Solution {
public static int zeros(final int n) {
return (n < 5) ? 0 : (n / 5) + zeros(n / 5);
}
}