黑马程序员技术交流社区

标题: 求1000!数中一共多少个0?大家交换下思路 [打印本页]

作者: 淡然无味    时间: 2016-3-16 16:51
标题: 求1000!数中一共多少个0?大家交换下思路
之前遇到一个测试题:“求1000!中一共多少个0?”
刚开始真的是一点思路没有,后来自己整理了下思路再结合网上的资料,大概有点方向,当时又感觉偏了那么一点点,所以希望大家可以来交流一下!
思路:
0一般都是5乘以2、4、6、8所得(不算0本身),由于这几个数都是2的倍数,所以简而言之就是2乘以5,2的个数比5要多的多,所以5中的个数就是乘积中0的个数!
1000除以5=200 (这个值表示1000!以内可以被5整除的数有200个,所以第一次统计就是有200个5)
当然还有的数中有多个5,比如25、125……
200除以5=40(这200个可以被5整除的数中,还有40个数里面可以提取出5来,所以到现在就有240个了)
40除以5=8(这40个数里面提取出25以后还有8个数可以继续提取,此时就是248个5了)
8除以5=1(这里我只算上商,所以到这里就一共可以提出249个5)
简而言之就是一共有249个0


但是,我觉得这个只是计算了最后面的0,而不是所有的0,这里我以12和13为例:
12!=479001600
13!=6227020800
如果还是按上面的思路,那么这里12%5=2,13%5=2   
刚好这两个结果中都是尾数里面有2个0,而中间的却没有统计,所以我才开始怀疑这个思路的问题了!
也不知道是不是我走进死胡同了,还希望大家能来看看问题在哪里,还是我太纠结!


作者: ameanboy    时间: 2016-3-16 18:08
对于求所有的0的个数。。我也只想出来阶乘结果转字符数组然后计数的方法,等大神解答
作者: 刘⑥⑥⑥    时间: 2016-3-16 21:43
现将个位、十位、百位、千位分别表示出来,然后定义个计算器,用if语句判断是否等于0,如果等于0,计算器++
作者: 淡然无味    时间: 2016-3-17 09:24
刘⑥⑥⑥ 发表于 2016-3-16 21:43
现将个位、十位、百位、千位分别表示出来,然后定义个计算器,用if语句判断是否等于0,如果等于0,计算器++ ...

请问有没有更高效一点的思路呢




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