博客
关于我
算法——172、阶乘后的零(力扣)
阅读量:639 次
发布时间:2019-03-14

本文共 925 字,大约阅读时间需要 3 分钟。

第一种思路:每一次求阶乘,截断最后面的零,取最后面的一部分,这种方法有很大的偶然性,不适合一般计算,下面的 sum %= 10000 是小编疯狂的提交最后的出来的结论,仅对此题有效。

class Solution {   public:    int trailingZeroes(int n) {           int sum = 1, target = 0;        while(n >= 1)        {               sum *= n;            --n;            while(sum % 10 == 0)            {                   sum /= 10;                ++target;            }            sum %= 10000;        }        return target;    }};

一般性算法:在求 阶乘的过程中,只要末尾出现了 2 * 5 的组合,那么必然会出现一个 零,例如 4 * 5, 8 * 25,等等等等,而对于每一个 5来说,中间至少会有 2、4 三个 2 ,所以我们只需要统计 5 因子在所有数中出现的情况就可以了。

class Solution {   public:    int trailingZeroes(int n) {           int sum = 0;        for(int i = 1; i <= n; ++i)        {               if(i % 5 == 0)            {                   int j = i;                do                {                       ++sum;                    j /= 5;                }while(j % 5 == 0);            }        }        return sum;    }};

转载地址:http://cfeoz.baihongyu.com/

你可能感兴趣的文章
nagios服务端安装
查看>>
name_save matlab
查看>>
Nami 项目使用教程
查看>>
NAND NOR FLASH闪存产品概述
查看>>
NASA网站曝严重漏洞,或将沦为黑客钓鱼网站?
查看>>
Nash:轻量级、安全且可靠的脚本语言
查看>>
NAS个人云存储服务器搭建
查看>>
nat 网卡间数据包转发_你是不是从来没有了解过光纤网卡,它跟普通网卡有什么区别?...
查看>>
NAT-DDNS内网穿透技术,解决动态域名解析难题
查看>>
NativePHP:使用PHP构建跨平台桌面应用的新框架
查看>>
Nat、端口映射、内网穿透有什么区别?
查看>>
Nat、端口映射、内网穿透有什么区别?
查看>>
nat打洞原理和实现
查看>>
NAT技术
查看>>
NAT模式下虚拟机centOs和主机ping不通解决方法
查看>>
NAT的两种模式SNAT和DNAT,到底有啥区别?
查看>>
NAT网络地址转换配置实战
查看>>
NAT网络地址转换配置详解
查看>>
Navicat for MySQL 命令列 执行SQL语句 历史日志
查看>>
Navicat for MySQL 查看BLOB字段内容
查看>>