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! 结果中尾数为零的数量. 示例 : 输入: 输出: 解释: ! = , 尾数中没有零. 示例 : 输入: 输出: 解释: ! = , 尾数中有个零. 说明:算法的时间复杂 ...
随机推荐
- spring源码解析之IOC容器(四)——属性注入
上一篇跟踪了bean的创建过程,接下来,我们继续跟踪bean的属性填充的过程.先回到doCreateBean方法,代码如下: protected Object doCreateBean(final S ...
- linux 环境 安装jdk tomcat mysql git
1.安装JDK 1.官方下载jdk,linux版本的rpm包 2.安装rz sz ----------编译安装 //安装 cd /tmp wget http://www.ohse.de/uwe/rel ...
- 前端Vue基础学习
Vue基础 对与vue的简洁明了的干货分享,适合小白学习观看,如果有笔误或者想了解更多的,请给笔者留言,后续会继续分享,从零开始的vue相关经验 1.创建vue实例 <div id=" ...
- ZTree简单粗暴快速使用
是什么:功能强大的树形插件 tip:查资料时痛苦的地方,自我改进 1.没有注明版本:版本不对应导致配置完成后各种无端的错误,特别难查找,运气好能找到英文的解答 2.没有写明配置文件,或者不指明配置文件 ...
- Nginx查看并发连接数
Nginx查看并发连接 通过界面查看 通过界面查看通过web界面查看时Nginx需要开启status模块,也就是安装Nginx时加上 --with-http_stub_status_module 然后 ...
- Linux搭建基于BIND的DNS服务器
Linux搭建基于BIND的DNS服务器 实验目标: 通过本实验掌握基于Linux的DNS服务器搭建. 实验步骤: 1.安装BIND 2.防火墙放通DNS服务 3.编辑BIND的主配置文件 4.编 ...
- 安装Eclipse for MAC 苹果版
1. 安装Eclipse for MAC 苹果版 2. Thank you for downloading Eclipse If the download doesn't start in a few ...
- Ceph Plugin - Dashboard - By Anoyi
▶ 部署 Dashboard 1.安装 ceph-mgr-dashboard yum install -y ceph-mgr-dashboard 2.禁用 SSL ceph config set mg ...
- c++ 二分答案
c++ 二分答案 问题 使得x^x达到或超过n位数字的最小正整数x是多少?n<=2000000000 分析 对与这种较难求解的问题,我们很难想出较好的解决策略.但是,我们至少知道答案一定在1与2 ...
- 简单学习之json格式说明
json格式说明: 1.对象是一个无序的“‘名称/值’对”集合. (1)一个对象以“{”(左括号)开始,“}”(右括号)结束. (2)每个“名称”后跟一个“:”(冒号): (3)“‘名称/值’ 对”之 ...