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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求500!的结果中包含多少个0?注:500! = 1×2×3×4×5×...×499×500,大神们你们有什么样的思路和想法呢?

9 个回复

倒序浏览
哪有五星难度,就是小学乘法的水平http://bbs.itheima.com/thread-133474-1-1.html
更直接的,用BigDecimal做
回复 使用道具 举报
fantacyleo 发表于 2015-4-9 18:06
哪有五星难度,就是小学乘法的水平http://bbs.itheima.com/thread-133474-1-1.html
更直接的,用BigDecimal ...

额,好吧,大神厉害呀。。。。。赞一个,我先学习一下。
回复 使用道具 举报
我这个也没做出来
回复 使用道具 举报
import java.math.BigInteger;

class Test
{
          public static void main(String args[])
        {
                  BigInteger result = new BigInteger("1"); //新建一个值为1的BigInteger对象
                  int count = 0;                           //定义一个计数器,值为0
   
                  for(int x = 2 ; x <=500 ; x++)
                  {
                          result = result.multiply(new BigInteger(x+""));//进行阶乘运算,得出结果。
                  }
                  String str = result.toString();          //将结果转变为字符串
   
   
                  for(int i = 0 ; i <str.length(); i++)    //将结果(字符串)遍历一遍。
                  {
                          if(str.charAt(i) == '0')                //进行判断,当有"0"时,计数器每有一个0时就加1.
                                  {
                                  count++;                              
            
                                  }
                  }
                System.out.println(count);
        }
}


这题还好吧
回复 使用道具 举报
思路:1:先计算500!的结果。2:把这个结果转成字符串。3:遍历字符串。
回复 使用道具 举报
学习下,大家思路?疑问是,为什么不把变量 设置为long能
回复 使用道具 举报
10加1个0,100加2个0,2乘以5加一个0,一个个数。
回复 使用道具 举报
这个是用递归,也可以 用字符串遍历。用递归主要是算法,代码就很简单了
回复 使用道具 举报
  1. public static int count(int i){
  2.                 if(i%10==0){
  3.                         count++;
  4.                         count(i%10);
  5.                 }
  6.                 return count;
  7.                 }
复制代码

我弄了个这样的方法,结果内存溢出了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马