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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Moonboy2014 中级黑马   /  2014-7-6 22:18  /  1330 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1000的阶乘的结果里包含多少个0啊

8 个回复

倒序浏览
我列了表算了下31个0吧
回复 使用道具 举报
幕夏 发表于 2014-7-6 22:23
我列了表算了下31个0吧

光尾数的0就有200多个啊:loveliness:
回复 使用道具 举报
上面漏错了 应该是110个0 吧
回复 使用道具 举报
知道的各位大神请多多指点
回复 使用道具 举报
本帖最后由 fantacyleo 于 2014-7-6 23:16 编辑

这个题的思路是寻找末尾0产生的条件。

尾数是1、3、7、9的数参与乘法运算,不影响乘积末尾0的个数。比如3,3*6*5末尾0的个数和6*5末尾0的个数是一样的。原因很简单:3*m,如果m末尾不含0,3*m乘积末尾不可能是0。如果m末尾含0,去掉末尾0的部分与3相乘不可能产生末尾0,因此3*m的末尾0的个数与m相同。同理可以证明尾数是1、3、7、9的数参与乘法运算,不影响乘积末尾0的个数

那么要考虑的只剩下尾数是偶数(包括0)或5的数。进一步分析,末尾0来自2*5(其他偶数乘以5可以分解为2乘以5),因此只要看1-1000中的数可以分解出多少对[2 5]。显然2的个数要多于5,能凑成多少对[2 5]完全取决于5的个数。那么,只要设一个计数器,对1-1000的每个数,不断除5直到不能整除为止,每整除1次,计数器+1
回复 使用道具 举报
fantacyleo 发表于 2014-7-6 23:13
这个题的思路是寻找末尾0产生的条件。

尾数是1、3、7、9的数参与乘法运算,不影响乘积末尾0的个数。比如3 ...

那中间的0怎么算呢
回复 使用道具 举报
Moonboy2014 发表于 2014-7-6 23:21
那中间的0怎么算呢

中间的0?你是说像1001中间的两个0?貌似我见到这个题都是让算末尾0的吧,中间0还真没啥好办法
回复 使用道具 举报
用笨方法,for循环遍历1-1000中的数,然后将每个数用一个可以将整数转换成字符串的函数转换成字符串,然后对字符串遍历,遇到0,计数器+1,这样就算出来了。不过现在不会写将整数转换成字符串的函数。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马