求n!中含有0的个数

题目:求n!中含有0的个数。

分析 :这个题目很简单,关键是n的阶乘可能很大,一般的基础类型整数存不下。Java中提供了大数类,很方便,本题中就是用BigInteger类存放结果的。

 1 package huawei;
 2 
 3 import java.math.BigInteger;
 4 
 5 
 6 public final class Demo {
 7     
 8     /*
 9     功能:
10         
11     输入: 
12         
13     输出:    计算n!中有多少个0
14          
15     返回: 
16          
17     */
18     
19     public static   int getZeroCount(int n)
20     {
21         /*在这里实现功能*/
22         BigInteger N = BigInteger.valueOf(n);
23         BigInteger NFactorial = getNFactorial(N);//获取n的阶乘,保存在一个大整型里面
24         String NFactorialToString = NFactorial.toString();
25         
26         //获取结果里面0的个数
27         int total = 0;
28         
29         for(int i=0;i<NFactorialToString.length();i++) {
30             
31             if(NFactorialToString.charAt(i)=='0')
32             {
33                 total++;
34             }
35             
36         }
37         
38 
39         return total;
40     }
41     
42     //计算n的阶乘
43     public static BigInteger getNFactorial(BigInteger b) {
44         
45         if(b.equals(BigInteger.ONE)) 
46         
47         {
48             return b;
49             
50         }else {
51             
52             return b.multiply(getNFactorial(b.subtract(BigInteger.ONE)));
53             
54         }
55     }
56     
57 }

转载于:https://www.cnblogs.com/hewenwu/p/3666232.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值