博客
关于我
算法——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/

你可能感兴趣的文章
mysql视图建立MERGE算法和TEMPTABLE算法的区别(效率与表锁定问题)
查看>>
mysql视图,索引和存储过程
查看>>
mysql解压没有data_Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini及服务无法启动的快速解决办法(问题小结)...
查看>>
Mysql解压版安装
查看>>
Mysql设置字符编码及varchar宽度问题
查看>>
MySQL设置白名单限制
查看>>
MySQL设置远程连接
查看>>
MySQL详解:索引的介绍和原理分析
查看>>
MYSQL语句。
查看>>
Mysql账号权限查询(grants)
查看>>
MYSQL输入密码后闪退的解决方法
查看>>
MySQL迁移到达梦:如何轻松、高质量完成迁移任务
查看>>
mysql返回的时间和实际数据存储的时间有误差(java+mysql)
查看>>
mysql还有哪些自带的函数呢?别到处找了,看这个就够了。
查看>>
Mysql进入数据库
查看>>
mysql进阶 with-as 性能调优
查看>>
mysql进阶-查询优化-慢查询日志
查看>>
wargame narnia writeup
查看>>
MySQL进阶篇SQL优化(InnoDB锁问题排查与解决)
查看>>
Mysql进阶索引篇03——2个新特性,11+7条设计原则教你创建索引
查看>>