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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

之前遇到一个测试题:“求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,而中间的却没有统计,所以我才开始怀疑这个思路的问题了!
也不知道是不是我走进死胡同了,还希望大家能来看看问题在哪里,还是我太纠结!

3 个回复

倒序浏览
对于求所有的0的个数。。我也只想出来阶乘结果转字符数组然后计数的方法,等大神解答
回复 使用道具 举报
现将个位、十位、百位、千位分别表示出来,然后定义个计算器,用if语句判断是否等于0,如果等于0,计算器++
回复 使用道具 举报
刘⑥⑥⑥ 发表于 2016-3-16 21:43
现将个位、十位、百位、千位分别表示出来,然后定义个计算器,用if语句判断是否等于0,如果等于0,计算器++ ...

请问有没有更高效一点的思路呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马