输出:n!中含有0的个数。
)
题目
1、 使用分治法完成下面编程
输入:n
输出:n!中含有0的个数。
例如:输入:10
输出:2
因为10!=3628800,其中0的个数为2
例如:输入:15
输出结果:4
因为15!= 1307674368000,其中0的个数为4
例如:输入:20
输出结果:7
因为20!= 2432902008176640000,其中0的个数为7
注意:n的取值范围从1到50
程序代码
package com.算法设计与分析报告题目;
import java.util.Scanner;
import com.Dome2Sum.Demo2Sum;
public class text1 {
// 求阶乘
public static double jiecheng(int M) {
if (M == 1) {
return 1;
}
return M * jiecheng(M - 1);
}
// 求有几个0
static int sum(double n){
int sum = 0;//记零的个数
while(n>1){ // 数字只剩一位是停止
if(Math.floor(n%10) == 0){ //取余后向下取整,尾数为零,sum加1
sum +=1;
}
n=n/10; //去除最后一个数(个位数)即数字右移一位。
}
return sum;
}
public static void main(String[] args) {
int n;
double y; //n输入求阶乘的数, y记录求阶乘后的值
Scanner sc = new Scanner(System.in);
System.out.print("输入1~50之间的数n:");
n = sc.nextInt(); //界面输入求阶乘的数
if(n < 1 || n > 50){ //判断是否在输入范围内
System.out.println("你输入的数不在1~50之间");
}else{
y = text1.jiecheng(n); //调用方法求阶乘
// System.out.println(y); //输出n!的数 //此条语句为测试用题目没要求
int sum = text1.sum(y); //调用计算0个数的函数
System.out.println( n +"!中含有0的个数为:" + sum);
}
}
}