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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹冬明 中级黑马   /  2014-4-16 02:10  /  2800 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曹冬明 于 2014-4-16 13:06 编辑
  1.         public static int getCount(int n)
  2.         {
  3.                 int count = 0;
  4.                 for (int i=1;Math.pow(5,i)<=n;i++ )
  5.                 {
  6.                         count+=n/Math.pow(5,i);
  7.                 }
  8.                 return count;
  9.         }
复制代码

15 个回复

倒序浏览
验证一下25!
回复 使用道具 举报

5个有问题么,我说的是末尾哦
回复 使用道具 举报
本帖最后由 水竹 于 2014-4-16 13:05 编辑

25=5*5,有两个五,显然应该比24!多了两个。而且这个应该很好想吧,几个零就代表着能被十的几次方整除,而十分解质因数就是2*5,2的话肯定有很多,每个偶数都会提供一个2的因子,5的话一共就那么几个——5、10、15、20、25算两个,加起来不是6个零么。
回复 使用道具 举报
水竹 发表于 2014-4-16 13:01
25=5*5,有两个五,显然应该比24!多了两个。而且这个应该很好想吧,几个零就代表着能被十的几次方整除,而 ...

哦,抱歉,我少写了个等号,才会有这种结果
回复 使用道具 举报
呃,报什么歉,笔误而已嘛
回复 使用道具 举报
本帖最后由 杨庆雷 于 2014-4-16 14:12 编辑

public static int getCount(int n)
        {
                int count = 0;
                for (int i=1;i <= (int)(n/5);i++ )
                {
                        count = count + (int)(n/ Math.pow(5,i) ) ;
                }
                return count;
        }
思想:一个数的阶乘 包括多少个 5 或者 0 那么结果的结尾就有多少个0
比如说 10的阶乘   1*2*...*9*10  中间包括 5和10  那么结尾有两个0
            15的阶乘  1*2*3*4...*14*15   中间包括 5,10,15  那么结尾有三个0  
            16的阶乘  1*2*3*4...*14*15*16    中间包括 5,10,15  那么也是结尾有三个0  


回复 使用道具 举报
杨庆雷 发表于 2014-4-16 13:26
public static int getCount(int n)
        {
                int count = 0;

按照你的思想25的阶乘:5,10,15,20,25,5个0呗,你计算过25和24相乘就会产生两个0,你怎么秒杀的一切
回复 使用道具 举报
曹冬明 发表于 2014-4-16 13:32
按照你的思想25的阶乘:5,10,15,20,25,5个0呗,你计算过25和24相乘就会产生两个0,你怎么秒杀的一切 ...

难道 25 的阶乘 就是  25*24 么  难道不是
1* 2*3*4*...*25么
回复 使用道具 举报
杨庆雷 发表于 2014-4-16 13:40
难道 25 的阶乘 就是  25*24 么  难道不是
1* 2*3*4*...*25么

你还是没懂 啊,2*5产生一个0,4乘15产生一个0,24乘25产生两个0,10乘20产生两个0,加在一起是几个0,你算算
回复 使用道具 举报
没考虑那么多  我上面修改了一下  应该行了
回复 使用道具 举报
曹冬明 发表于 2014-4-16 13:43
你还是没懂 啊,2*5产生一个0,4乘15产生一个0,24乘25产生两个0,10乘20产生两个0,加在一起是几个0,你 ...


没考虑那么多  我上面修改了一下  应该行了
回复 使用道具 举报
曹冬明 发表于 2014-4-16 13:43
你还是没懂 啊,2*5产生一个0,4乘15产生一个0,24乘25产生两个0,10乘20产生两个0,加在一起是几个0,你 ...

我觉得 再改改 就跟LZ的一样了
回复 使用道具 举报
杨庆雷 发表于 2014-4-16 14:15
我觉得 再改改 就跟LZ的一样了

你之前那种方法,都没必要写成那样,直接return n/5就完了被,你不就是看n里都多少个5么
回复 使用道具 举报
冬明哥  学习了    你要去哪期啊
回复 使用道具 举报
杨庆雷 发表于 2014-4-16 14:41
冬明哥  学习了    你要去哪期啊

我也不知道啊,赶上哪期算哪期被
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马