常见题目之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;
}


n的阶乘末尾还有多少个0

n! 末尾有多少个 0 个人信息:就读于燕大本科软件工程专业 目前大三; 本人博客:google搜索“cqs_2012”即可; 个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己...
  • cqs_2012
  • cqs_2012
  • 2014年05月06日 13:36
  • 1002

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

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

N的阶乘(N!)中的末尾有多少个0?

前段时间在《编程之美》中也遇到了该问题,昨天在做中国某IT公司的在线笔试题的时候,也遇到了该问题,不过之前一直没有完全理解这个问题的真正解决方式,昨天晚上在睡觉前才想明白(不好意思,智商让各位捉急了 ...
  • luxin1662
  • luxin1662
  • 2015年08月12日 11:11
  • 207

N的阶乘(N!)中的末尾有多少个0?

转自: http://blog.csdn.net/zephyr_be_brave/article/details/9149617 问题:N的阶乘(N!)中的末尾有多少个0?      例如:N =...
  • weixin_36082485
  • weixin_36082485
  • 2016年11月24日 17:11
  • 162

N的阶乘(N!)中的末尾有多少个0?

问题:N的阶乘(N!)中的末尾有多少个0? 例如:N = 5,N! = 120.末尾有1个0.分析:想到这个问题,有人可能第一反应就是现求出N!,然后再根据求出的结果,最后得出N!的末尾有...
  • beloveddarling
  • beloveddarling
  • 2017年01月10日 20:37
  • 302

求N!末尾的0的个数(找规律+递归)

0\'s Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 计算整数n!(n的阶乘)末尾有多少个0。 输入 第一行输入一...
  • qq_16255321
  • qq_16255321
  • 2014年07月20日 16:49
  • 1598

求关于n的阶乘结果后面有几个零?如2016的阶乘(网易的笔试选择题)

文章的原地址:http://blog.csdn.net/zyh2525246/article/details/53697136 一、阶乘数小的时候可以直接计算。 例如:求10!后面零的个数...
  • qikaihuting
  • qikaihuting
  • 2017年03月25日 16:50
  • 2942

1024! 末尾有多少个0?

先把答案贴出来,具体证明在下面…… 末尾0的个数取决于乘法中因子2和5的个数。显然乘法中因子2的个数大于5的个数,所以我们只需统计因子5的个数。 是5的倍数的数有: 1024 / 5 = 20...
  • hxz_qlh
  • hxz_qlh
  • 2013年10月25日 20:09
  • 3067

计算n阶乘中尾部零的个数

写在前面本来觉得问题挺容易的,不打算记录,谁知道一不小心,还真没做出来。最终凭借“朴实”的算法思想解决了问题,但是其中的曲折还真是汗颜。科学的思维指导确实必不可少,“野路子”的朴素的战斗理论不论是效率...
  • surp2011
  • surp2011
  • 2016年04月16日 15:17
  • 5093

n的阶乘结果中末尾有多少个零?

题目:n的阶乘中一共有多少个零? 解答:产生零的结果只能有一种可能性那就是2*5=10,然而n的阶乘本质上是可以拆解为很多2和5以及其他不包含2和5的乘数的积,例如5的阶乘:1*2*3*4*5=1*2...
  • laoniu_c
  • laoniu_c
  • 2014年09月03日 21:38
  • 1073
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:常见题目之n的阶乘末尾有多少个0
举报原因:
原因补充:

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