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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zippo 中级黑马   /  2014-7-27 22:42  /  1889 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zippo 于 2014-8-2 22:42 编辑

9、 求1000!的结果中包含多少个0?注:1000! = 1×2×3×4×5×...×999×1000


关于1000! = 1×2×3×4×5×...×999×1000,我试过用for循环求,但是由于数字太大,不能求得,是用到我没学到的知识吗,求大神不要给代码,只求点醒思路。

11 个回复

倒序浏览
BigInteger
回复 使用道具 举报

这个是什么东西,好像没学到,请问在基础视频的哪里?
回复 使用道具 举报
查阅一下API
回复 使用道具 举报
第一种
循环
A.把每个结果除以10,取余数if是否为0,为0就累加计数器
B.把每个结果除以10,取商,if是否小于10,小于10继续循环,else 递归A B俩个步骤

第二种,把每个结果变成字符串,获取每个为0的子串,进行累加

           

评分

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

查看全部评分

回复 使用道具 举报
陈云阳 发表于 2014-7-27 23:09
第一种
循环
A.把每个结果除以10,取余数if是否为0,为0就累加计数器


没看懂。。。也不知道如何实现。。。。。。

占位,,同问下这个问题。。。。。。。。。
回复 使用道具 举报
好像很难哦
回复 使用道具 举报
DSY 中级黑马 2014-7-27 23:29:21
8#
想的也是楼上第一种的做法:用for循环,由于直接用,结果会很大,所以在for循环里就进行结果的抽取   具体做法就是        把每个结果除以10,判断是否有余数,如果余数为0则使用一个while("循环判断余数是否为0")--因为存在某次相乘结果有多个0,并每次余数为0都往计数器里加1,并不断的把相乘的结果除以10,把获取的0去掉,同时也实现了把结果变小的目的

点评

有测试过吗?1000的阶乘很大,就算去掉所有后面的0结果也会溢出  发表于 2014-7-28 09:14
回复 使用道具 举报
DSY 发表于 2014-7-27 23:29
想的也是楼上第一种的做法:用for循环,由于直接用,结果会很大,所以在for循环里就进行结果的抽取   具体 ...

学习了,这个方法不错
回复 使用道具 举报
{:2_44:}这个题有人讲过,取5的倍数就可以了。
回复 使用道具 举报
DSY 发表于 2014-7-27 23:29
想的也是楼上第一种的做法:用for循环,由于直接用,结果会很大,所以在for循环里就进行结果的抽取   具体 ...

但是这样只能去除末尾的吧,中间的0还是没有去掉吧。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马