A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.math.BigInteger;

  2. public class Test9 {

  3.         /**
  4.          * 求1000!的结果中包含多少个0?注:1000! = 1×2×3×4×5×...×999×1000
  5.          *
  6.          * @param args
  7.          */
  8.         public static void main(String[] args) {

  9.                 // 新建一个值为1的BigInteger对象
  10.                 BigInteger result = new BigInteger("1");

  11.                 // 计数值为0
  12.                 int count = 0;
  13.                
  14.                 // 循环相乘,得出结果。
  15.                 for (int i = 2; i <= 1000; i++) {
  16.                         result = result.multiply(new BigInteger(i + ""));
  17.                 }
  18.                
  19.                 // 将其变为string类型
  20.                 String str = result.toString();

  21.                 // 将结果(字符串)遍历一遍。
  22.                 for (int i = 0; i < str.length(); i++) {

  23.                         // 当有"0"时候,count++作为计数。
  24.                         if (str.charAt(i) == '0') {
  25.                                 // 计数,每有一个0就增加1
  26.                                 count++;
  27.                         }
  28.                 }

  29.                 // 输出结果。
  30.                 System.out.println(count);
  31.         }

  32. }
复制代码

3 个回复

倒序浏览
本帖最后由 qq853636281 于 2015-6-2 18:58 编辑

BigInteger   这个类 真是好东西,好像就是为了求1000!  而存在一样!

但是这行代码是什么意思呢   result = result.multiply(new BigInteger(i + ""));   

这个 (i+"") 表示什么呢?,查了API对不上构造方法啊    

是字符串吗?
回复 使用道具 举报
这个方法感觉不好,求1000!中的0的个数一个是有技巧的
回复 使用道具 举报
tougboy 来自手机 中级黑马 2015-6-2 21:18:57
板凳
好像是传字符串进入比较简单  他就都转成字符串穿进去了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马