172. 阶乘后的零 Java解法
这题要完成其实要知道一个很巧妙的思想,就是阶乘里面,后面的几个零是由什么来决定的。
只有知道了这个,才能够在足够小的时间复杂度中得到答案。
其实乘法里面,末尾有0意味着因子中肯定有10,而10的质因子,就是5 和 2,所以,我们要看末尾有没有5,为啥直接看阶乘中的数字的包含的5的质因子的总数就可以了?不用看2的么?主要是5比2大,如果有5的质因数,那么肯定比如包含2,比如5!:aaarticlea/png;base64,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" style="font-size: inherit; color: inherit; line-height: inherit; padding: 0px; margin: 0px auto; max-width: 100%; display: inline-block; vertical-align: middle;" alt="" />,仔细观察,5的阶乘中5的总数只有1个,但是2的总数有3个。所以我们直接看5的数量就可以了。
5 : 1
10 : 2
15 : 3
20 : 4
25 : 6
30 : 7
35 : 8
40 : 9
45 : 10
50 : 12
……
那么这里你肯定发现了一个问题,就是为啥在25的时候一次洗由4加到了6?其实究其原因就是,我们之前一直在找aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAiCAYAAAAzrKu4AAAC3ElEQVRYR+2WP0hyURjGH1E0CaxAwSSKiFYJGsIQIbRB+kdFDmIWLW5BkJGBjpG0VUtj1BCFYFDUkBUF4VqLWKBEWrQogaIJ6sd7wI+u//ouLvFx73a5z3nPc37neV+uqFgsFvELH5FgjOetCMR4AoNATCDGlwBfvZCx/5fY5+cnDg8P8fDwgGQyibGxMUxPT0Mmk/E9dIWeaicSCXR0dEAikSAej+P6+hozMzNoamri6DkZy2azzNTo6CiUSiXe39/hdruh1+sxOzsLsVjckLmXlxc4nU58fHywOlRveXkZZrMZIpGotjFauLq6isnJSVgsFibc39/Hzc0NNjY2oFKpGja2tbWFVCqF9vZ2WK1W9Pb2VpiiTTjE6Oq2t7cxODgIk8nETJydnWFvbw+bm5vo6uqqaqxQKIBoy+XyqpuUFtHBI5EIhoaGfjxg3XGRz+exs7ODcDiM9fV1tLa2Vi1I2SESi4uLaGlpqbkpGbu9vWURIYNEzeFwQK1WV6ypa+zp6Qlra2tYWFiomoP7+3uEQiGMjIzg+PiYXY3f70dfXx/6+/srNovFYggGgxgfH4dUKkUgEMDp6Sk8Hg/a2tpqZ+z7F8qB1+tFT09PzeB/fX0xArRBOp1Gc3MzjEYjDAbDP3VxqRmWlpag0+l+NpbJZFjWOjs7WSvX6kb6K49Gozg4OMDj4yO0Wi1sNhu6u7srskaxODo6Ah2GyBKxkrG5uTlG/ftTcZVUgDqR5krJFOEnkxqNhrP47u4OFxcXmJ+fx9XVFYaHh7G7u4upqSkMDAxwtNQc1EA0v4gQ1adDuVwu9l6u5xgjAufn53h9ff1rijqOcjAxMQGFQtFQ+C8vL1mWKH9U1+fz4fn5mRmjjq5JjAytrKzg7e2NI6LRQYOxfDqXRESZgk0Tvd4QzuVyODk5ARkkY3T1dru9aicLfxc/TtQygUBMIMaXAF+9kDGBGF8CfPW/NmN/ALq1sKogcKa1AAAAAElFTkSuQmCC" style="font-size: inherit; color: inherit; line-height: inherit; padding: 0px; margin: 0px auto; max-width: 100%; display: inline-block; vertical-align: middle;" alt="" />的数量,但是aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAiCAYAAAAge+tMAAADUklEQVRYR+2WSyh8YRjGn4lcooRilJIFGyWRho2SLKQsyEZCEjsysUCNpeSysBlSVlZERLkTpmFDUi5RhnIJRUQuxfx73hq5nDNn/nVS6pzd6bzf+z3v73uf9zsmt9vtxh98TIbwXz41g/gvA4dB3CDuIwGjVXwEpVuYQVw3lD4m8kr8/v4e/f39qKqqQlhYmI8p1cPe3t6wsLCAqakpXF1dITExETU1NTCbzbLo7u4ONzc3iI2Nhb+/P87OzrC0tITi4mIEBQV9SawqnP9eo6OjmJubQ3t7uy7C5+fnJU96ejpeX19ht9txfHwMm82G8PBwnJycoLGxEZeXlyLSz88PDQ0NyMvLg8lk8k04k3R1dckGegh/fn5GR0cHnp6e0NzcjNDQUOzu7sJqtaK1tRWZmZkivKenBw8PD4iJiUFJSQkSEhJ+iGYFisQpdmRkBFFRURgeHtYU/v7+DgoLDg5W3IQbsU2GhoZwfX2N6upqOXoP4fLycuTn58v70dERsrOzNdtSUfja2pospJDe3l5N4exNkqqtrf2vluI+LS0t6O7uRkpKighfWVnBxcWFFEDqnz3wuZofwm9vbzE9PY2ioiI5Sm/CnU4n9vb2hBZPhkc7NjYmItLS0rxSYzu0tbUhJCQE9fX1Aun09BTr6+soKChAQECAGHlycvLDA6rCaUg6PikpCXFxcdja2vIq/OXlRQhxg8fHRxGRk5ODrKwsBAYGqgr3GJ/Em5qaEBkZqRjraSUWRg+oCmfgzs7Oh4u1hFOAy+XC4OAgtre3kZycjNLSUsTHx6v2OtfMzs7C4XCIMTlNPnuAMHhyJP7dA6rCl5eXwZHFRXw4Uw8ODpCamirtkJGR8aXq1dVVaauKigosLi4iNzcXfX19KCwshMViUaS4sbGBiYkJ1NXViWi2x/n5uRTNqcP5TcI0L6HwRPj+PZ/XC0iLuEeZr+akkIGBAVRWViIiIkKWb25uSqtQOKGxGPqDk4qT7fDw8MMDXs3Jj7wx6fT9/X254djvZWVlqmOKo47keOPx0lB6OGI7OzsxMzPz5XN0dLSQ5h6MGR8flwIonMVwX6Vb2/jJ0rwxdA4wiOsMVDOdQVwTkc4BBnGdgWqmM4hrItI54M8S/wfCKBy5nI+LuQAAAABJRU5ErkJggg==" style="font-size: inherit; color: inherit; line-height: inherit; padding: 0px; margin: 0px auto; max-width: 100%; display: inline-block; vertical-align: middle;" alt="" /> 也可做到后面有0。所以这里就多出了一个5的质因子的总数,因为25也是要分解成aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAiCAYAAAAzrKu4AAAC2klEQVRYR+2WP0hyURjGH1EsdRDLyCAQhVYJgiIEKTIkgqDIRbTc3IKgIBeniLAhCBxsC5oU08igQAsUQpykpSFIikQEUcSC/lB+vIfPD/VmeGmJj3vAQe5z3vu8v/O8R0W1Wq2GX7hEgjGepyIQ4wkMAjGBGF8CfPVCxv5fYg8PD5DJZOjt7QX9jKbTaby8vGBycpJv0xx9pVJBqVTC4OAgJBIJcrkcLi8vYbVa0d3d3aTnZOz09BRer/efiIpsbm5Cp9P92Nj9/T3W19dRKBRYLbFYjLW1NczMzEAkEn1v7Pz8HOFwmNEaHR3F/Pw8enp6fmyKCpCxvb09PD09YWBgADabDUNDQxxTpOUQI7R6vR5arbZjM5+fn+y4KQKtnTcWIWN3d3cdxYJj7OLigqHOZDIsDxMTE1hcXERXV1dbo5QdIrGysgKlUtlWR8YSiQTy+TwzSNRcLhc0Gg1nD8cYbZTL5RgZGcH7+zt2d3fR398Ph8PBMtG4rq6ucHNzg9nZWQSDQXY0kUgEw8PDbH/renx8RCqVwtzcHKRSKeLxOKLRKDweD1Qq1fcZay1Gw3B0dITt7W309fU1PX59fWUE6AXPz89QKBSYmpqCyWT6lnC9SH0YVldXMT4+3t5YuVyGz+djxetCMnZwcICdnR1O7mhAstksDg8PcX19DYPBALvdzia4NWsfHx8IBAKgZogsEasbW15eZtQbV9NRknBjYwNOpxMWi4XpTk5O2GdrawtqtbppczKZxNnZGdNTNqenp+H3+7GwsICxsbEmLQ0HNUf3FxGie4uacrvd7HurvskYbaauyD1dsNVqlR2h0Wj88q6pv7nT8MdiMZYlyh9NcigUwu3tLTNGE92WGD0oFovY399nmGlR92azmRP8xiJ0TBRsuoxbB6RR9/b2huPjY5BBMkZHv7S09OUkC/8uOr6t/woFYgIxvgT46oWMCcT4EuCr/7UZ+wNyv6qqzAl0dgAAAABJRU5ErkJggg==" style="font-size: inherit; color: inherit; line-height: inherit; padding: 0px; margin: 0px auto; max-width: 100%; display: inline-block; vertical-align: middle;" alt="" />。
我们来看看代码:
Show the code
1public int trailingZeroes(int n) {
2 int res = 0;
3 while (n >= 5) {
4 res += n / 5;
5 n = n / 5;
6 }
7 return res;
8}
这是个循环累加的过程,所以,如果出现了25,125, 625……就是要不断的分解成5的质因数的总数。
172. 阶乘后的零 Java解法的更多相关文章
- Java实现 LeetCode 172 阶乘后的零
172. 阶乘后的零 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! ...
- LeetCode 172. 阶乘后的零(Factorial Trailing Zeroes)
172. 阶乘后的零 172. Factorial Trailing Zeroes 题目描述 给定一个整数 n,返回 n! 结果尾数中零的数量. LeetCode172. Factorial Trai ...
- Leetcode 172.阶乘后的零
阶乘后的零 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! = 120 ...
- leetcode刷题笔记172 阶乘后的零
题目描述: 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例1: 输入: 输出: 解释: ! = , 尾数中没有零. 示例2: 输入: 输出: 解释: ! = , 尾数中有 个零. 说明: 你 ...
- 【每天一题】LeetCode 172. 阶乘后的零
开源地址:点击该链接 题目描述 https://leetcode-cn.com/problems/factorial-trailing-zeroes 给定一个整数 n,返回 n! 结果尾数中零的数量. ...
- 每日一道 LeetCode (41):阶乘后的零
每天 3 分钟,走上算法的逆袭之路. 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee ...
- LeetCode. 阶乘后的零
题目要求: 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 解法: class Solution { public: int ...
- 172 Factorial Trailing Zeroes 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量.注意: 你的解决方案应为对数时间复杂度. 详见:https://leetcode.com/problems/factorial-trailing-ze ...
- LeetCode 172:阶乘后的零
给定一个整数 n, 返回 n! 结果中尾数为零的数量. 示例 : 输入: 输出: 解释: ! = , 尾数中没有零. 示例 : 输入: 输出: 解释: ! = , 尾数中有个零. 说明:算法的时间复杂 ...
随机推荐
- 【Web前端Talk】无聊吗?写个【飞机大战】来玩吧(下篇)
上一篇介绍了如何使用cocos creator开发游戏,此篇是详细介绍功能点以及如何部署打包至微信小游戏体验. 欢迎关注我们的公众号:Web前端Talk.前端文章持续更新. 资源管理制作 1.准备工具 ...
- 接口和抽象类是否继承了Object
我们先看一下Java的帮助文档对于Object的描述: Class Object is the root of the class hierarchy. Every class has Object ...
- GStreamer基础教程03 - 媒体类型与Pad
摘要 在上一篇文章中,我们介绍了如何将多个element连接起来构造一个pipline,进行数据传输.那么GStreamer是通过何种方式保证element之间能正常的进行数据传输?今天就将介绍GSt ...
- Linux基础及系统优化
1 如何实现自动挂载操作(光驱自动挂载--fstab) 1.1 方法 第一种方法:编辑fstab文件 vi /etc/fstab /dev/cdrom /mnt iso9660 default 0 0 ...
- NET中级开发工程师职责要求
NET中级开发工程师岗位职责1.熟练掌握 WebApi, ASP.NET MVC, Entity Framework,.NET CORE等技术,精通JQuery.Vue.Bootstrap等前端开发框 ...
- 怎么用Hostwinds搭建Wordpress博客网站(超详细图文教程)
Hostwinds 成立于 2010 年,在主机托管行业算是一个比较新的品牌,但是,凭借丰富的产品线.卓越的服务器性能.良好的客户支持,以及低廉实惠的价格,他们受到了广大客户的喜爱,并多次获得行业重要 ...
- 使用docker启动mysql
安装docker 查询mysql版本, docker search mysql 拉取指定版本的镜像 docker pull NAME 启动镜像, 第一次启动最少需要指定MYSQL_ROOT_PASSW ...
- CentOS 7更新系统时间
Linux系统在安装的时候,总是会出现时区,时间的错误. 将Linux系统时间和本地区网络时间同步,ntpdate可以从网络同步时间, 需要安装sudo yum install ntp ntpdate ...
- 学习kafka自己发生的几个小错误记录
一. The method iterator() is ambiguous ConsumerIterator<byte[],byte[]> it =stream.iterator(); ...
- 2018.9.8 2018NOIP冲刺之配对
普及组第四题难度 主体思路竟然是贪心Q_Q 链接:https://www.nowcoder.com/acm/contest/164/D来源:牛客网 题目描述 小A有n个长度都是L的字符串.这些字符串只 ...