例如:N = 5,N! = 120.末尾有1个0.
分析:想到这个问题,有人可能第一反应就是现求出N!,然后再根据求出的结果,最后得出N!的末尾有多少个0。但是转念一想,会不会溢出,等等。
其实,从"那些数相乘可以得到10"这个角度,问题就变得比较的简单了。
首先考虑,如果N的阶乘为K和10的M次方的乘积,那么N!末尾就有M的0。如果将N的阶乘分解后,那么
N的阶乘可以分解为: 2的X次方,3的Y次方,4的5次Z方,.....的成绩。由于10 = 2 * 5,所以M只能和X和Z有关,每一对2和5相乘就可以得到一个10,于是M = MIN(X,Z),不难看出X大于Z,因为被2整除的频率比被5整除的频率高的多。所以可以把公式简化为M=Z.
由上面的分析可以看出,只要计算处Z的值,就可以得到N!末尾0的个数
方法一
要计算Z,最直接的方法就是求出N的阶乘的所有因式(1,2,3,...,N)分解中5的指数。然后求和

int fun1(int n)
{
    int num = 0;
    int i,j;
    
    for (i = 5;i <= n;i += 5)
    {
        j = i;
        while (j % 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相关推荐

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

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

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

    本篇文章是在osChina的代码分享里下载下来的,这里把它整理一下. 前一段时间看到一个往年程序竞赛的题解, 有一个题目说的是求 100 的阶乘末尾有多少个 0. 题解中给出的讲解提到, 一个数 n ...

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

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

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

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

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

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

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

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

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

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

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

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

  9. C语言求1000后面有多少个0,1到1000的阶乘 求1000阶乘的结果末尾有多少个0

    急求.用java算1到1000阶乘的末尾有几个零? 急求.用java算1到1000阶乘的末尾有几个零?急求具体的java程序怎么写? 1000的阶乘后面有多少个零? 从1乘到1000得出的结果后面有多 ...

最新文章

  1. Datawhale组队学习周报(第032周)
  2. Spring+Dubbo+Zookeeper简单框架与使用
  3. S1 商品信息管理系统
  4. 029_Loading加载
  5. vue中 this.$set的用法
  6. ActiveMovie属性说明,使用资料。
  7. JAVA元注解@interface详解(@Target,@Documented,@Retention,@Inherited)
  8. 单片机c语言控制显示器,单片机实现LCD液晶显示器控制原理..docx
  9. Matlab编程学习笔记【待续】
  10. 5新建没有头文件_开垦绿茵版图迎来“真金白银”保障,新建足球场地可获财政补贴...
  11. mysql日志存储类型_msyql 日志分类、存储、慢查询日志
  12. Mac cmake命令不可用-bash: cmake: command not found
  13. 【行业专题报告】 汽车、二手车-专题资料
  14. 移动APP开发框架盘点
  15. html---表单实例代码
  16. MySQL数据库安全配置规范操作
  17. 洛达AirPods鉴别检测工具AB153x_UT,支持1562a 1562f
  18. 微信公众号赞赏账户头像在哪里修改?附详细图文教程
  19. 别人放假去旅游,你却在家搞学习?
  20. matlab 数据显示位数,matlab数据位数格式设置

热门文章

  1. 10 个优质的 Laravel 扩展推荐
  2. IntelliJ IDEA添加过滤文件或目录(转)
  3. python3.6 安装Scrapy
  4. FreeRTOS 事件标志组 ——提高篇
  5. 【实验手册】使用Visual Studio Code 开发.NET Core应用程序
  6. 打造最美HTML5 3D机房(MONO哥强势归来,第四季惊艳发布)
  7. [MySQL 源码] 从buffer pool中获取空闲block流程
  8. 关于谷歌地图坐标与百度地图坐标的事
  9. cygwin是一个在windows平台上运行的unix模拟环境,下载与安装
  10. 修复 SyntaxHighlighter 3.0.83 Java 代码多行注释 Bug