本篇文章是在osChina的代码分享里下载下来的,这里把它整理一下。

前一段时间看到一个往年程序竞赛的题解, 有一个题目说的是求 100 的阶乘末尾有多少个 0. 题解中给出的讲解提到, 一个数 n 的阶乘末尾有多少个 0 取决于从 1 到 n 的各个数的因子中 2 和 5 的个数, 而 2 的个数是远远多余 5 的个数的, 因此求出 5 的个数即可. 题解中给出的求解因子 5 的个数的方法是用 n 不断除以 5, 直到结果为 0, 然后把中间得到的结果累加. 例如, 100/5 = 20, 20/5 = 4, 4/5 = 0, 则 1 到 100 中因子 5 的个数为 (20 + 4 + 0) = 24 个, 即 100 的阶乘末尾有 24 个 0. 其实不断除以 5, 是因为每间隔 5 个数有一个数可以被 5 整除, 然后在这些可被 5 整除的数中, 每间隔 5 个数又有一个可以被 25 整除, 故要再除一次, ... 直到结果为 0, 表示没有能继续被 5 整除的数了.

#include <stdio.h>int getfn_1(const int n)
{int counter=0;  //the counter!int i;for(i=4; i<=n; i++){int flag;flag=i;while(flag>=5&&flag%5==0){flag/=5;counter++;}}return counter;
}int main(void)
{///int ret;int fact_n = 100;printf("100!有%d个零\n",getfn_1(fact_n));return 0;
}

执行结果:

100!有24个零
请按任意键继续. . .

100 的阶乘末尾有多少个0?相关推荐

  1. 每天一道LeetCode-----计算n的阶乘末尾有多少个0

    Factorial Trailing Zeroes 原题链接Factorial Trailing Zeroes 计算n!(n的阶乘)末尾有多少个0 思路: 0实际上来源于10,而10来源于2×5,所以 ...

  2. 100的阶乘末尾有多少个零

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1×2× ...

  3. N的阶乘末尾有多少个0

    例如:N = 5,N! = 120.末尾有1个0. 分析:想到这个问题,有人可能第一反应就是现求出N!,然后再根据求出的结果,最后得出N!的末尾有多少个0.但是转念一想,会不会溢出,等等. 其实,从& ...

  4. n的阶乘末尾有多少个0?

    1.先求res = n!,然后 tmp = res %10, if(tmp ==0)count++,造成问题,n!的增长很夸张,一不小心就溢出了 2.追究到底,这种题目还是找规律的题 会发现2*5=1 ...

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

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

  6. 计算1024的阶乘结果有多少个0

    1024! 末尾有多少个0? 1024的阶乘末尾有多少个0,这个问题只要理清思想就很好解了. 有多少个0取决于有多少个10相乘,即1024拆成小单元后有多少个10. 由于10不是素数,所以直接用10进 ...

  7. 【基础】n的阶乘尾部有多少个0 JAVA金典算法-判断一个数(乘积得到的数)的末尾有几个0--发掘

    [基础]n的阶乘尾部有多少个0 我们登堂入室--- 首先看下n的阶乘尾部有多少个0这道题 我们有很多思路可以去解决这道题 比如啊 我们可以先把他的阶乘结果求出来 然后我们转换为字符串 在一一判断是否为 ...

  8. 100阶乘末尾有多少个零

    100! = 1 * 2 * 3 * ... * 99 * 100 如果结尾要有0,必然是有两个数字相乘进位了,而10 = 2 * 5,所以一个数字末尾有多少个0,取决于它分解因子后,有多少个2和有多 ...

  9. 【经典智力题】1024! 末尾有多少个0?——“计算阶乘末尾0的数量”问题引出

    网上有这样一个广为流传的有趣问题: 1024! 末尾有多少个0? 相应的解法是: 末尾0的个数取决于乘法中因子2和5的个数.显然乘法中因子2的个数大于5的个数,所以我们只需统计因子5的个数. 是5的倍 ...

最新文章

  1. 如何安装jdk_Java JDK下载与安装教程
  2. DCMTK:使用JPEG-LS传输语法压缩DICOM文件
  3. EEPROM的操作---SPI接口和I2C接口
  4. AD PCB板子长度宽度 PCB板子尺寸大小信息
  5. javascript函数防抖Debounce
  6. 【vijos】在vijos的自己的域中创建题目
  7. 伺服位置模式参数设置
  8. bt 介绍以及 bt 种子的hash值(特征值)计算
  9. Git 连接码云 上传本地项目
  10. yaaw 错误 “No such method: aria2.addTorrent”的解决办法
  11. 论文阅读笔记(11):Adaptive Self-Paced Deep Clustering with Data Augmentation,用数据增强的自适应Self-Paced深度聚类
  12. 仿小米天气预报未来几天趋势预报折线图
  13. php招生信息网代码,基于PHP招生管理信息系统
  14. User-Agent详解
  15. 电瓶车续航测试软件,谁续航最牛:24款电动汽车实测数据全曝光
  16. Python 画图学习入门
  17. 如何搭建 GTA 5 私服--GTA5私服架设教程
  18. 佳能Canon PIXMA iP1600 打印机驱动
  19. Memory Card、逻辑加密卡、CPU卡
  20. 工厂模式下的动态Mybatis-Plus

热门文章

  1. 实时数仓之 Kappa 架构与 Lambda 架构
  2. 移动计算机类岗位综合知识测评,【浙江移动产品运营面试】一开始是笔试,普通的行测题+移动知识+性格测试。-看准网...
  3. 基于Node+Vue+Express开发实现商城系统
  4. Python爬取哔哩哔哩视频的相关信息后续
  5. regular pad(正规焊盘),thermal pad(热风焊盘) 和anti pad(隔离盘)的区别使用
  6. nginx设置端口号和开启防火墙
  7. 程序员应该懂的九件事
  8. 真正懂得珍惜(观《士兵突击》数月之后)
  9. Java中的多态如何理解——详解
  10. java多态的概念_Java基本概念:多态