黑马程序员技术交流社区

标题: 基础测试的一道题目,求大神指点思路。 [打印本页]

作者: zippo    时间: 2014-7-27 22:42
标题: 基础测试的一道题目,求大神指点思路。
本帖最后由 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循环求,但是由于数字太大,不能求得,是用到我没学到的知识吗,求大神不要给代码,只求点醒思路。

作者: 花花公子    时间: 2014-7-27 22:51
BigInteger
作者: zippo    时间: 2014-7-27 22:53
花花公子 发表于 2014-7-27 22:51
BigInteger

这个是什么东西,好像没学到,请问在基础视频的哪里?
作者: 花花公子    时间: 2014-7-27 23:02
查阅一下API
作者: 陈云阳    时间: 2014-7-27 23:09
第一种
循环
A.把每个结果除以10,取余数if是否为0,为0就累加计数器
B.把每个结果除以10,取商,if是否小于10,小于10继续循环,else 递归A B俩个步骤

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

           
作者: 烟海    时间: 2014-7-27 23:21
陈云阳 发表于 2014-7-27 23:09
第一种
循环
A.把每个结果除以10,取余数if是否为0,为0就累加计数器


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

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

学习了,这个方法不错
作者: snowaves    时间: 2014-7-28 07:38
{:2_44:}这个题有人讲过,取5的倍数就可以了。
作者: zippo    时间: 2014-8-3 23:20
DSY 发表于 2014-7-27 23:29
想的也是楼上第一种的做法:用for循环,由于直接用,结果会很大,所以在for循环里就进行结果的抽取   具体 ...

但是这样只能去除末尾的吧,中间的0还是没有去掉吧。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2