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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

网上搜了一些,单还是没太懂,这个的思路是用结果算0,还是用数学方法得出结果。

点评

http://bbs.itheima.com/thread-133474-1-1.html  发表于 2014-9-4 15:24

24 个回复

倒序浏览
直接来也可以,刚刚做完这题。用math.bigInteger可以搞定这一题
回复 使用道具 举报
  1. package com.itheima;

  2. import java.math.BigInteger;

  3. /**
  4. * 9、 求1000!的结果中包含多少个0?注:1000! = 1×2×3×4×5×...×999×1000
  5. *
  6. * 思路:1.因为求出1000!之后数值太大,需要使用math.BigInteger,可以解决大数问题。
  7. *     2.首先创建一个BigInteger对象,容纳计算结果。
  8. *     3.for循环循环相乘。(1*(1+1)*(1+1+1)····*1000)
  9. *     4.得出结果后,将BigInteger的对象用字符串表示。
  10. *     5.for循环,使用str.charAt(i)方法搜寻有多少个0,有的话count++。
  11. *     6.打印结果
  12. *
  13. */
  14. public class Test9 {
  15.   public static void main(String args[])
  16.   {
  17.           BigInteger result = new BigInteger("1");//新建一个值为1的BigInteger对象
  18.           int count = 0;//计数值为0
  19.           
  20.           for(int i = 2 ; i <=1000 ; i++)
  21.           {
  22.                   result = result.multiply(new BigInteger(i+""));//循环相乘,得出结果。
  23.           }
  24.           String str = result.toString();//将其变为string类型
  25.           
  26.           
  27.           for(int i = 0 ; i <str.length(); i++)//将结果(字符串)遍历一遍。
  28.           {
  29.                  if(str.charAt(i) == '0')//当有"0"时候,count++作为计数。
  30.           {
  31.                   count++;//计数,每有一个0就增加1.
  32.                   
  33.           }
  34.           }
  35.           
  36.           System.out.println(count);//输出结果。
  37.   }
  38. }
  39. //你可以看看这个代码

复制代码

点评

现在的基础唯一能看得懂的。。。赞一个  发表于 2015-5-1 22:58

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1

查看全部评分

回复 使用道具 举报

这是暴力求解呀。
回复 使用道具 举报
不用想了,只能用结果来取
回复 使用道具 举报
以前看过大牛解的,你搜一下相关的帖子
回复 使用道具 举报
15579171087 发表于 2014-9-4 23:33
这是暴力求解呀。

哈哈,不过更简便。有更好方法分享下吗?:P
回复 使用道具 举报

牛B。。。。。。
回复 使用道具 举报
踏云 中级黑马 2014-11-3 22:12:35
9#
牛,好牛
回复 使用道具 举报

思路很清楚,学习了
回复 使用道具 举报
很好 终于有个用我现在的知识可以看懂的了
回复 使用道具 举报
真的是暴力,不解释啊!还有其他办法吗?
回复 使用道具 举报
好像只有这个办法吧  为什么要说人家暴力呢,谁说暴力的你来个不暴力的
回复 使用道具 举报
可以用                           
回复 使用道具 举报
很好的,可是我有个疑问:看基础题的时候,一头雾水,看完答案后,海阔天空,最后再做题,这质量会否会下降?让我本来就心虚的知识,更加没底气了:'(
回复 使用道具 举报
谢谢分享,看看了
回复 使用道具 举报
0的来源是5*2,将1000!中每个数都拆分成5*5···*2的形式,因为2的倍数远多于5的个数,故将所有书拆分为前述形式后5的总数就是1000!中0的数量
*/
package com.itheima;

public class Test9 {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println("1000!中包含"+getZeroCount(1000)+"个0");
        }
        public static int getZeroCount(int num){
                int count=0;                                //定义计数器
                for(int i=5;i<=num;i+=5){        //由于计算0的个数只和5的数量有关,故每次i递增5
                        int temp=i;
                        while(temp%5==0){                //计算该数的质因数5的个数
                                count++;
                                temp=temp/5;
                        }               
                }
                return count;                                //返回值
        }

点评

这个方法真的很简单,谢谢分享!!! 有收获!  发表于 2015-8-9 17:10
回复 使用道具 举报 2 0
好叼 ...
回复 使用道具 举报
158803629 发表于 2015-7-15 09:42
好像只有这个办法吧  为什么要说人家暴力呢,谁说暴力的你来个不暴力的

大数问题,可以用暴力求解的方法来实现,此”暴力“非彼”暴力“ ,不过别人有了更简单的方法,不得不佩服! ! !
回复 使用道具 举报
umbriel 发表于 2015-8-5 00:16
0的来源是5*2,将1000!中每个数都拆分成5*5···*2的形式,因为2的倍数远多于5的个数,故将所有书拆分为 ...

这个牛,
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马