求阶乘末尾0的个数(java)
末尾0的个数
题目描述
输入一个正整数,求n!末尾有多少个0?比如n = 10; n! = 3628800 ,所以答案为2
输入描述 输入为一行,n (1 <= n <= 1000)//输入量范围限制不能用先求阶乘的方法,会产生溢出 |
输出描述 输出一个整数,即题目所求 |
输入 10 |
输出 2 |
输入 50(结果30414093201713378043612608166064768844377641568960512000000000000) |
输出 12 |
思路简析:10需要2*5构成,而2的增长速度远大于5,则0的个数取决于5的个数
package javaPractice;
import java.util.*;
public class CountZero {
public static void main(String[] args) {
CountZero cz = new CountZero();
Scanner s = new Scanner(System.in);
int n = s.nextInt();
System.out.println(n+"d的阶乘中尾部零的个数为:"+cz.countFive(n));
}
public int countFive(int n) {
int count = 0;
if(n<5) {
return count;
}
else {
return n/5 + countFive(n/5);
}
}
}