【leetcode】172. Factorial Trailing Zeroes
来源:互联网 发布:聊聊语音聊天网mac 编辑:程序博客网 时间:2024/05/19 11:45
题目:
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
翻译:给定一个正整数n,在O(logn)的时间复杂度下,求出n的阶乘的最后包含多少个连续的0。
思路:
以下文字转自:http://www.2cto.com/kf/201512/454453.html
考虑n!的质数因子。后缀0总是由质因子2和质因子5相乘得来的,如果我们可以计数2和5的个数,问题就解决了。
考虑例子:n = 5时,5!的质因子中(2 * 2 * 2 * 3 * 5)包含一个5和三个2。因而后缀0的个数是1。
n = 11时,11!的质因子中((2 ^ 8) * (3 ^ 4) * (5 ^ 2) * 7)包含两个5和八个2。于是后缀0的个数就是2。
我们很容易观察到质因子中2的个数总是大于等于5的个数,因此只要计数5的个数即可。
那么怎样计算n!的质因子中所有5的个数呢?一个简单的方法是计算floor(n / 5)。例如,7!有一个5,10!有两个5。
除此之外,还有一件事情要考虑。诸如25,125之类的数字有不止一个5。
例如n=25, n!=25*24*23*...*15...*10...*5...*1=(5*5)*24*23*...*(5*3)*...(5*2)*...(5*1)*...*1,其中25可看成5*5,多了一个5,应该加上
处理这个问题也很简单,首先对n÷5,移除所有的单个5,然后÷25,移除额外的5,以此类推。下面是归纳出的计算后缀0的公式。
n!后缀0的个数 = n!质因子中5的个数= floor(n / 5) + floor(n / 25)+...
代码:
<span style="font-size:18px;">class Solution {public:int trailingZeroes(int n) {return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5);}};</span>结果:
- LeetCode 172.Factorial Trailing Zeroes
- [LeetCode]172.Factorial Trailing Zeroes
- LeetCode 172. Factorial Trailing Zeroes
- 【LeetCode】172.Factorial Trailing Zeroes
- [leetcode] 172.Factorial Trailing Zeroes
- 【LeetCode】172. Factorial Trailing Zeroes
- 172. Factorial Trailing Zeroes LeetCode
- leetcode: 172. Factorial Trailing Zeroes
- LeetCode--172. Factorial Trailing Zeroes
- [LeetCode]172. Factorial Trailing Zeroes
- leetcode 172. Factorial Trailing Zeroes
- LeetCode *** 172. Factorial Trailing Zeroes
- LeetCode 172. Factorial Trailing Zeroes
- leetcode-172. Factorial Trailing Zeroes
- 【leetcode】172. Factorial Trailing Zeroes
- 172.[Leetcode]Factorial Trailing Zeroes
- Leetcode 172. Factorial Trailing Zeroes
- leetcode 172. Factorial Trailing Zeroes
- linux 下 iozone随机读写测试报错: error reading block
- IOS开发—通过ChildViewController实现view的切换
- sort b
- UVA 11983-Weird Advertisement-k次以上覆盖矩形面积(线段树+扫描线)
- Autolayout之 关于+requiresConstraintBasedLayout方法作用
- 【leetcode】172. Factorial Trailing Zeroes
- LeetCode 40 Combination Sum II
- Robot Framework自动化测试框架(三):Android自动化
- Recording HTTP traffic on iOS devices with HP LoadRunner
- 如何将pdf转换成word格式可编辑的格式
- android原生与js的交互。
- IOS5中的addChildViewController
- OC语言笔记(二):OC字符串操作
- EM(Expectation-Maximization)算法的浅显理解