美文网首页编程之美
BoP——2.2阶乘中的0个数和二进制最后一个1的位置

BoP——2.2阶乘中的0个数和二进制最后一个1的位置

作者: Myth52125 | 来源:发表于2017-10-14 16:22 被阅读0次

这个题忘记在那里遇到过了。

题目一

方法一

先求出这个阶乘,然后在去计算尾部有多少个0就行。
但是,面试里肯定不会提。

方法二

数学的方法
所有的数,能分解出多少个5,最终就会有多少个0。
考察每一个数

int counts1(int v)
{
    int counts = 0;
    for(int i = 1;i<=v;i++)
    {
        int j = i;
        while(j%5 == 0)
        {
            counts++;
            j/=5;
        }
    }
    return counts;
}

方法三

这是一种数学的思想,先求出含有至少一个5的因数的数,在求至少含有2个5因数的个数。

int counts2(int v)
{
    int counts=0;
    while(v)
    {
        counts+=v/5;
        v/=5;
    }
    return counts;
}

题目二

最后一个是1,的位数。
和上一个题一样,多一个5因数,结尾就多一个0。
而这个题中,多一个2因数,二进制形式中就会多一个0。
和上一题的方法二同理

int counts3(int v)
{
    int counts =0;
    while(v)
    {
        //这里其实就是相当于v/2
        v>>=1;
        counts+=v;
    }
}

相关文章

  • BoP——2.2阶乘中的0个数和二进制最后一个1的位置

    这个题忘记在那里遇到过了。 题目一 方法一 先求出这个阶乘,然后在去计算尾部有多少个0就行。但是,面试里肯定不会提...

  • N阶乘尾部的0个数

    N阶乘尾部的0个数 描述 设计一个算法,计算出n阶乘中尾部零的个数 思路: 1、1 * 2 * 3 * ... *...

  • 编程之美之"不要被阶乘吓到"

    问题陈述 给定一个整数N,N的阶乘N!中末尾有多少个0? N! 的二进制表示中最低位1的位置? 问题1的O(N2)...

  • x&(-x)和x&(x-1)的含义详解

    最近看算法题,涉及到两个很经典的位运算: x&(-x):保留二进制下最后出现的1的位置,其余位置置0(即一个数中最...

  • 阶乘后的零

    tag 阶乘后0的个数 题目 给定一个整数 n,返回 n! 结果尾数中零的数量。 示例 1:输入: 3输出: 0解...

  • 2018-05-14 172. Factorial Traili

    题意:给你一个数n,输出n的阶乘n!尾端0的个数。解题思路:阶乘结果末端的0是由5 * 2、5 * 4、5 * 偶...

  • 算法--求n!末尾的0的个数

    给定一个整数n,求解它的阶乘的乘积里末尾0的个数。举个例子,比如3! = 1 * 2 * 3 = 6,末尾0的个数...

  • Java 实现阶乘算法

    Java 实现阶乘算法 阶乘算法如下: 以下列出 0 至 20 的阶乘: 0!=1,(0 的阶乘是存在的) 1!=...

  • 2、尾部的零

    题目描述 设计一个算法,计算出n阶乘中尾部零的个数 思路 n阶乘能产生尾数0,换言之就是问n阶乘能乘出多少个101...

  • 《张其成教授讲易经》第二课学习笔记

    新知: 【1】二进制和八卦符号: 二进制有两个数字0和1,八卦有两个基本符号--阴爻和—阳爻。 用二进制的0和1,...

网友评论

    本文标题:BoP——2.2阶乘中的0个数和二进制最后一个1的位置

    本文链接:https://www.haomeiwen.com/subject/wytfuxtx.html