常见题目之n的阶乘末尾有多少个0

原创 2015年09月29日 10:55:24
问题:N的阶乘(N!)中的末尾有多少个0?

     例如:N = 5,N! = 120.末尾有1个0.

解答:将N的阶乘看为10的M次方的乘积,末尾就有M个0。将N的阶乘进行分解可以得到:2的X次方,3的Y次方,5的Z次方,7的T次方的

乘积。10=2*5,所以M只和X、Z有关,每一对2和5相乘都能得到10,于是M=min(X,Z),而一般情况下X>Z,即偶数个数肯定要大于5的倍数,因此可以近似成M=Z。通过Z可以得到M的值,有两种方法实现。


方法一
    要计算Z,最直接的方法就是求出N的阶乘的所有因式(1,2,3,...,N)分解中5的指数。然后求和
    

int fun1(int n)
{
    int num = 0;
    int i,j;
    
    for (= 5;<= n;+= 5)
    {
        j = i;
        while (% 5 == 0)
        {
            num++;
            j /= 5;
        }
    }
    
    return num;
}




方法二:

Z = N/5 + N /(5*5) + N/(5*5*5).....知道N/(5的K次方)等于0

公式中 N/5表示不大于N的数中能被5整除的数贡献一个5,N/(5*5)表示不大于N的数中能被25整除的数再共享一个5.......




int fun2(int n)
{
    int num = 0;
    
    while(n)
    {
        num += n / 5;
        n = n / 5;
    }
    
    return num;
}


(ACM数论)求N的阶乘末尾有多少个0

问题描述:给定一个整数N,那么N的阶乘N!末尾有多少个0?这个问题的难点在于,不能直接计算出N!,因为会溢出。既然不能直接计算,那就换个姿势计算(手动滑稽)首先,我们考虑到N!末尾0的个数和 N!有多...
  • KasumiMasami
  • KasumiMasami
  • 2016-08-29 16:23:24
  • 1206

求整数N阶乘N!末尾有多少个0呢?

一、采用常规的做法,求出N的阶乘,然后计算出该结果末尾的0的个数; 这种方法有两个缺陷: (1)无论将结果定义为long还是double,结果值都会溢出; (2)效率低下;方法一: 那么我们分...
  • gogogo_sky
  • gogogo_sky
  • 2017-07-22 14:48:09
  • 341

给定一个整数N,那么N的阶乘N!末尾有多少个0

题目:给定一个整数N,那么N的阶乘N!中末尾共有多少个0?     看到这个题目可能很常规的想法就是将N的阶乘先求出来,再计算这个数的末尾0的个数。但是一个整数也就是一个整型,一个整型的大小是4个字节...
  • agate_zhang
  • agate_zhang
  • 2017-07-21 14:03:17
  • 241

n!阶乘末尾有多少个零0

题目: 初阶:1*2*3*……*100 求结果末尾有多少个零。 进阶: N的阶乘末尾有多少个0分析: 一般类似的题目都会蕴含某种规律或简便方法的阶乘末尾一个零表示一个进位,则相当于乘以10而10...
  • TommyZht
  • TommyZht
  • 2015-06-01 13:46:42
  • 3303

计算N的阶乘结果末尾含多少个零

计算N的阶乘结果末尾含多少个零
  • wuhengde
  • wuhengde
  • 2016-08-16 23:33:47
  • 1807

给定一个整数N,那么N的阶乘N!末尾有多少个零呢?

题目:给定一个整数N,那么N的阶乘N!末尾有多少个零呢? 末尾有几个零?如果我们从哪些数相乘可以的出10,这个角度来解决这个问题,这就会变成简单。对质因数进行分解由于10=2*5,即每一对2...
  • TangShangWen
  • TangShangWen
  • 2013-10-03 21:57:19
  • 1800

N的阶乘末尾有多少个0

问题描述:                   给定一个数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3628800  如果N=10000呢,怎么计算?                ...
  • u014112584
  • u014112584
  • 2014-03-17 17:46:10
  • 2168

N!的结果中末尾有多少个0,即可以在N阶乘中找到5的个数就是N阶乘结果的末尾会有几个0了,请看以下分析

酷狗的一个笔试题,有点意思!         问 N !的结果中末尾有多少个0?给出分析与编程计算。           分析:要知道N!有几个零,只看得0的原因:每一个数可分解质数的相乘,而质...
  • fnhrifnhri
  • fnhrifnhri
  • 2013-03-11 15:35:42
  • 989

NYOJ 954 求N!二进制末尾几个0

NYOJ 954 求N!二进制末尾几个0 题目地址:  NYOJ 954 题意:  中问题不解释。 分析:  即是求N!二进制末尾几个0,换句话就是求N!的因子有几个2。  具体做法跟POJ 1...
  • hcbbt
  • hcbbt
  • 2014-05-26 21:04:31
  • 1716

[LeetCode]计算N的阶乘末尾0的个数

这是LeetCode上的p172,计算N!末尾0的个数: 1) 10 = 5 x 2 2) count_5 综上,很简单能够想到一个naive的算法: for i = 1 -> n count_5 ...
  • pjt73651
  • pjt73651
  • 2015-09-11 19:25:53
  • 442
收藏助手
不良信息举报
您举报文章:常见题目之n的阶乘末尾有多少个0
举报原因:
原因补充:

(最多只允许输入30个字)