题目

设计一个算法,计算出n阶乘中尾部零的个数样例
11! = 39916800,因此应该返回 2挑战
O(logN)的时间复杂度

题目分析

n阶乘中,尾部出现的零是10和10的倍数相乘的结果,尾部出现多少个零,其实就是在n阶乘中有多少个10相乘,10的公因数除了1与10,就只剩下2与5,所以出现10其实是2与5相乘
因此,尾部出现的零就是5和偶数相乘的结果,在n阶乘中,偶数的个数要比5个数多得多,所以尾部零的个数就为多少个5相乘的个数(10看做2x5即一个5,25看做两个5…)

以n=100为例

1x2x3x4x5x6x7x8x9x.........x98x99x100

这些数中每5个数将会出现一个5的倍数,一共出现temp1 = 100/5 =20

5x10x15x20x25x30x......x90x95x100

我们将这些数提取出一个5

5(1x2x3x4x5....x17x18x19x20)

括号中20个数出现5的倍数的个数为temp2 = 20/5 =4

5x10x15x20

再提取5,此时括号已经没有5的倍数,即temp3 = 0

5(1x2x3x4)

所以总的个数为temp = temp1+ temp2 = 14
综上,程序循环到temp = 0时,程序结束
用C语言程序实现为

#include<stdio.h>
int main()
{long num=0,temp;temp = n/5;while(temp!=0){num = num+temp;temp = temp/5;}return 0;
}

【算法】计算n阶乘中尾部0的个数相关推荐

  1. python计算n阶乘中尾部零的个数_(Java)设计一个算法,计算出n阶乘中尾部零的个数...

    展开全部 long 类型对大数阶乘来e68a8462616964757a686964616f31333365633963说存储范围大小,强行使用会溢出,可以使用 BigDecimal. 代码如下:im ...

  2. python计算n阶乘中尾部零的个数_计算n阶乘中尾部零的个数

    写在前面 本来觉得问题挺容易的,不打算记录,谁知道一不小心,还真没做出来.最终凭借"朴实"的算法思想解决了问题,但是其中的曲折还真是汗颜.科学的思维指导确实必不可少,"野 ...

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

    计算因数5的个数即可 long long NumOfZero(long long n){long long count=0;while(n>0){count+=n/5;n=n/5;}return ...

  4. 判断N!阶乘中末尾0的个数

    如果我们要判断出0的个数,如果我们直接求N!那么数据会很大,数据可能溢出, 那么为了得到0的个数我们知道可以从10的角度进行判断,如果我们知道N!中10的个数, 我们就可以判断出0的个数, 如果N!= ...

  5. 求1000的阶乘尾部0的个数

    第一种方法: 算出1000!中所有0的个数: /***求1000!中所有的0*/private static void demo1() {BigInteger bi1 = new BigInteger ...

  6. 整数阶乘尾部0的个数

    求解整数阶乘尾部0的个数主要是算出有多少个5及其倍数,因为这些数与偶数相乘会产生0,以100!的阶乘举例 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 ...

  7. Python_计算一个数的阶乘并统计尾部0的个数

    def getNum(num):# 计算阶乘result = 1for i in range(1, num+1):result *= i# 统计尾部0的个数str1 = str(result)str2 ...

  8. 求一个整数的阶乘结果中后缀0的个数

    问题描述: 给一个整数,请输出该数字阶乘的后缀0的个数,例如: 数字7,它的阶乘为5040,后面有一个0,则输出1:还有数字10,它的阶乘为3628800,后面有两个0,则输出2. /* 功能:求一个 ...

  9. 计算 n! 中末尾0的个数 求n!中p的重数

    题意: 输入正整数n,计算 n! 中末尾0的个数 输入:输入一个正整数n (1≤n≤1 000 000 000) 输出:输出 n! 末尾0的个数 样例输入:3 100 1024 样例输出:0 24 2 ...

最新文章

  1. VC提前注入.net软件的方法
  2. TensorFlow入门(三)多层 CNNs 实现 mnist分类
  3. AI“双子星”同日联动:DeepMind加速编程自动化,OpenAI新方法解开2道国际奥数题...
  4. Unity发布WebGL时如何修改默认的载入进度条sf?
  5. Python 实现有道翻译命令行版
  6. for循环一定要指定键么 vue_vue的for循环使用方法
  7. Javascript中字符串输出html的动态链接
  8. SAP云平台开发权威指南的目录
  9. C++实现dijkstra单源最短路径算法-邻接表+优先队列
  10. C语言在STM32中的内存分配
  11. python对sqlite增删改查_Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】...
  12. php结构的项目,ThinkPHP修改项目结构
  13. 网站建设中常见的21个漏洞及预防方法
  14. Oracle10g 详细安装教程
  15. 为什么我们需要PRINCE2认证——上海信息化培训中心
  16. 正交设计助手的使用教程(设计测试用例的工具)
  17. UE4 蓝图通信:接口调用
  18. Ubuntu 16.04 一系列软件安装命令,包括QQ、搜狗、Chrome、vlc、网易云音乐安装方法
  19. nginx配置https后报错nginx: [emerg] https protocol requires SSL support in XXX.conf详细解决方法
  20. Utility工具类:

热门文章

  1. WPS本地镜像化在线文档操作以及样例
  2. 视频接口之AV、S端子、VGA、DVI、HDMI、DP
  3. 基于oAuth2.0开发属于自己的SSO授权服务 - 授权码(Authourization Code)模式 (持续更新中。。。)
  4. PostgreSQL创建空间数据库
  5. org.apache.jasper.JasperException:无法为JSP编译类:(已解决)
  6. 【金猿产品展】亚信科技AISWare Onta KG知识图谱工具——一站式全流程知识计算管理平台...
  7. 从头写一个超过zip的压缩算法(11):最终篇:优化压缩后的文件大小(7):deflate的滑动窗口
  8. 计算机半年没用为啥启动不了机,浅析win7系统电脑很久没用开不了机的原因及解决措施...
  9. JavaSE第6篇:面向对象
  10. VR全景加盟要注意什么,全景加盟如何选择?