`

尾部的零

阅读更多

设计一个算法,计算出n阶乘中尾部零的个数

样例

11! = 39916800,因此应该返回 2

 

 

这一题,看着很水,但是要是没有做过的话,也会 遇到很多的坑,我就是这样(难受),这道题虽然非常简单,但是非常的考察人,第一种算法就是最low,最暴力的方法,简单粗暴的计算能被分解的5的个数:
public static long num(long n){

        if (n < 5){
            return 0;
        }
        long num = 0;
        for (long i = 5;i <= n;i++){
            long t = i;
            while (t%10==0&&t!=0){
                num++;
                t = t/10;
            }

            while (t%5 == 0&&t!=0){
                num++;
                t = t/5;
            }
        }
        return num;
    }
 这种算法的复杂度是0(n),很明显 超时了;
我就想要是我把每次的步数调整为5那时间复杂度不就是O(n)/5
public static long num(long n){

        if (n < 5){
            return 0;
        }
        long num = 0;
        for (long i = 5;i <= n;i+=5){
            long t = i;
            while (t%10==0&&t!=0){
                num++;
                t = t/10;
            }

            while (t%5 == 0&&t!=0){
                num++;
                t = t/5;
            }
        }
        return num;
    }
 可是我又天真了,还是超时,因为O(n)约等于O(n)/5;
最后参考了一下某网友的方法如下:
    public static long num(long n){
         long num = 0;
         long t = n/5;
         while (t!=0){
             num+=t;
             t = t/5;
        }
        return num;
    }
 这个算法的时间复杂度为O(n);
我又写了下面同样 复杂度的方法:
    public static long num(long n){
          long num = 0;
          while (n!=0){
              long t = n/5;
              num+=t;
              n = n/5;
        }
        return num;
    }
 
分享到:
评论

相关推荐

    Android-RecyclerView添加头部与尾部

    我们可以设置一个特定的值表示头部和尾部,例如,0表示正常item,1表示头部,2表示尾部。 在Adapter初始化时,需要将头部和尾部视图添加到item列表中。可以通过`addItemDecoration`方法来实现,这样头部和尾部会在...

    java 尾部连续0的个数

    对任意输入的正整数N,编写Java程序求N!的尾部连续0的个数。如18! = 6402373705728000,尾部连续0的个数是3。

    SQLServer多种去除尾数多余的0

    如果希望完全去除所有尾部零,可以使用以下自定义函数: ```sql CREATE FUNCTION dbo.TrimTrailingZeros(@value decimal) RETURNS decimal AS BEGIN DECLARE @result decimal; SET @result = @value; WHILE (@...

    【lintcode】2.尾部的零(c/c++/python解法)

    设计一个算法,计算出n阶乘中尾部零的个数 样例 样例 1: 输入: 11 输出: 2 样例解释: 11! = 39916800, 结尾的0有2个。 样例 2: 输入: 5 输出: 1 样例解释: 5! = 120, 结尾的0有1个。 挑战 O(logN)的时间复杂度 1....

    labview小数至字符串转化时去掉无效0和小数点.vi

    labview小数至字符串转化时去掉无效0和小数点函数,labview2013以上版本可以打开。

    listview的头部尾部布局

    注意,添加头部和尾部后,ListView的索引会相应地改变,0索引将对应于头部,而不是数据列表的第一个元素。 4. **设置适配器**:在添加了头部和尾部之后,我们还需要设置ListView的数据适配器,以显示实际的数据列表...

    尾数零的个数

    求N阶乘的尾部零的个数, 设计一个算法,计算出n阶乘中尾部零的个数 样例 11! = 39916800,因此应该返回 2 尾部连续的0的个数

    阶乘后的0(数学问题 数论解决)1

    在计算阶乘时,我们可能会遇到一个有趣的问题:阶乘结果尾部有多少个0? 这个问题涉及到数论中的一个概念,即10的因子分解。10可以分解为2×5,也就是说,阶乘结果尾部的0是由2和5的配对产生的。因为2的倍数在阶乘...

    recylerview 添加头部 尾部

    标题"recylerview 添加头部 尾部"和描述"android RecyclerView 支持添加header头部、footer尾部"正是针对这个功能的讨论。 实现RecyclerView添加头部和尾部主要有以下步骤: 1. **创建Header和Footer视图** 首先...

    c语言程序题,笔试可能会用到

    这是因为25=5×5,可以提供两个5的因子,从而产生额外的尾部零。所以我们还需要将N除以25、125、625等,然后累加结果。 3. **处理更高次幂**:类似地,我们需要考虑125的倍数,即5的三次方,以及更高次幂。但通常在...

    RecyclerView添加头部和尾部

    在实际应用中,我们常常需要在RecyclerView中添加头部和尾部视图,以实现更加丰富的用户界面。本教程将详细介绍如何在RecyclerView中添加头部和尾部。 首先,我们需要理解RecyclerView的基本结构。RecyclerView由...

    探索规律(基础)巩固练习.doc

    1. **阶乘与尾部零**:题目中的1!+2!+3!+…+10!计算的是阶乘之和。阶乘表示的是所有小于等于该数的正整数的乘积。对于5!以上的阶乘,由于包含2和5的乘积,会引入尾部零。因此,1!到10!的和的尾部数字只取决于2!到4!...

    组合数学201516秋A答案1

    的尾部零的个数由10的倍数(5,15,20,30,40,50)和含有25的因子(5,15,25,35,45)决定。最终计算得到12个零。 【图论】 - **凸多边形的对角线交点问题**: - 第二部分是关于凸10边形的对角线。题目指出,任意三条对...

    易语言源码易语言文件尾部附加数据源码.rar

    易语言源码易语言文件尾部附加数据源码.rar 易语言源码易语言文件尾部附加数据源码.rar 易语言源码易语言文件尾部附加数据源码.rar 易语言源码易语言文件尾部附加数据源码.rar 易语言源码易语言文件尾部附加数据...

    北大版_小学数学四年级(((下册)))知识点和练习题.doc

    14. 添加尾部零的影响:在整数或小数末尾添加零不会改变其值,例如50平方米、0.08、4.00、6.50吨。但在小数末尾添加零后会改变其精确度,例如3.02变成3.020,7.8米变成7.800米,8.7105变成8.71050。 15. ...

    易语言源码易语言超级列表框尾部添加合计.rar

    易语言源码易语言超级列表框尾部添加合计.rar 易语言源码易语言超级列表框尾部添加合计.rar 易语言源码易语言超级列表框尾部添加合计.rar 易语言源码易语言超级列表框尾部添加合计.rar 易语言源码易语言超级列表...

    将数字转换为大写(C#)

    // 替换连续的零并去除尾部零 } ``` 在这个例子中,`ToChineseNum.cs`文件应该包含了这个转换函数的完整实现。这个小程序对于初学者来说是一个很好的实践,它涉及到数字处理、字符串操作以及字典数据结构的使用。...

    小升初数学总复习时整数的认识 PPT课件.pptx

    数的改写常用于简化读写,如将整万或整亿的数省略尾部0并加上单位。非整数时,可以在万位或亿位上点小数点,去掉末尾0。近似数则是忽略不重要的尾数,通常使用四舍五入法,当尾数最高位小于或等于4时舍去,大于4时...

    java swing 如何自动定位尾部

    在Swing中,自动定位尾部可能指的是在组件或布局管理器中让某个元素始终保持在窗口的底部。在许多情况下,这在设计对话框或者聊天应用时非常有用,比如在聊天窗口中保持消息输入框始终位于屏幕的最下方。 在Swing中...

    Android实战RecyclerView头部尾部添加方法示例

    如果添加了头部,在position = 0的时候回调头部的viewType给onCreateViewHolder,从而创建头部。尾部创建方法于此类同。 知识点五:onCreateViewHolder()方法 onCreateViewHolder()方法是用于创建视图的方法,在...

Global site tag (gtag.js) - Google Analytics