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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 无奈的我+.l   /  2014-5-23 09:47  /  6429 人查看  /  36 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

铁血丹心 发表于 2014-5-25 00:24
楼主的程序我也没看懂,自己写的,思路写的长点,大家好看一些。大家看一下有啥不对的地方没 ...

这么帅的思路。代码很精辟。
回复 使用道具 举报
不是很懂啊
回复 使用道具 举报
铁血丹心 发表于 2014-5-25 00:24
楼主的程序我也没看懂,自己写的,思路写的长点,大家好看一些。大家看一下有啥不对的地方没 ...

佩服算法厉害的,从本质分析问题,而不是从表面的方法解决
回复 使用道具 举报
gentleman 发表于 2014-5-24 07:22
大家看看我的做法怎么样,感觉效率比较高,(不建议全部算出来,因为要的只是零的个数,字符运算效率低,望 ...

你的方法跟一楼算法哥可以媲美
回复 使用道具 举报
Aron 发表于 2014-5-23 18:18
这个问题我给你解答  因为我就是这么写的 确实如此int的话范围不够 无法得出1000!这样大的数
但是java里 ...

楼主的代码是对的,你这个代码有一点点小问题。最后答案应该是249个,上面这个运行得出的是472个,稍分析可知,题目要求的是乘积最后有多少个0,也就是能被10的多少次方整除,这个代码里遍历了结果的每一位,只要有0就计数,假设结果是2340003200应该输出2而不是5.修改部分代码即可满足。将for循环用下面代码替换:
  1.         int len = s.length()-1;
  2.         while(s.charAt(len) == '0')// 遇到第一个不为0的位置就结束循环
  3.         {
  4.                 N++; // 计数
  5.                 len--;// 从后往前遍历
  6.         }
复制代码
回复 使用道具 举报
{:3_68:}只需要找出5的整数倍的个数,然后100的倍数个数,1000的倍数个数这些就好做了
回复 使用道具 举报
本帖最后由 咪啪 于 2014-6-30 23:36 编辑

任意一个数能分解成素数的乘积 ,(其中p为素数),只有2*5会得到0,且0乘任意数还是0,因此只要看min{2的指数,5的指数}

回复 使用道具 举报
我的个人思路:0的个数是由5来控制,而不是2来控制,2比5多,有多少个5就有多少个零
int num5 = 0;
        double count = 2;
        while (count <= 1000)
        {
            double numtemp = count;
           while(numtemp>=2)
            {
                if (numtemp % 5 == 0)
                {
                    num5++;
                    numtemp = numtemp / 5;

                }else{
                    break;
                }
            }
            count++;

        }

回复 使用道具 举报
收藏下,以后忽悠小朋友
回复 使用道具 举报
247033993@qq.co 发表于 2014-5-24 10:29
算出结果?那得多大数字?

没多少的,1000!里面总共包含472个0
回复 使用道具 举报
我也有这道题
回复 使用道具 举报
铁血丹心 发表于 2014-5-25 00:24
楼主的程序我也没看懂,自己写的,思路写的长点,大家好看一些。大家看一下有啥不对的地方没 ...

你用计算机算算15!看看结果中有多少个0
回复 使用道具 举报
inception 来自手机 中级黑马 2014-10-10 10:23:23
33#
1*2*3*4*6*7=1008
回复 使用道具 举报
ZZT 中级黑马 2016-4-29 19:28:10
34#
好难哦
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马