leetcode 172. Factorial Trailing Zeroes
来源:互联网 发布:php get class method 编辑:程序博客网 时间:2024/05/27 16:43
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
题意是计算n!的末尾的0的个数。要求运行时间为对数时间。
先给出最直接的思路:先计算出n! , 然后用n%10依次抽取出末位,并判断是不是0,一旦出现非0则停止计数。显然该方法不满足对数时间要求,且在n=13的时候会内存溢出。
class Solution {public: int trailingZeroes(int n) { int q = 1, ans = 0,count=0; for (int i = 2; i <= n; ++i) { ans = q*i; q = ans; } while (ans) { if (!(ans % 10)) ++count; ans /= 10; if (ans%10) break; } return count; }};
下面思考如何避免直接求出 n! 。可以发现 0 的出现都是由于质数2和5相乘, 理论上统计出对 1:n 进行质因子分解,分别得出2和5的总个数为a,b,取min(a,b)即是0的个数,显然 min(a,b)=b,即5的个数。5的个数可用 floor(n/5) 得到。同时考虑到 25 有 2 个 5 , 125 有 3 个 5,… , 故要对(n/5)进行迭代,直到为 0 。
class Solution {public: int trailingZeroes(int n) { int ans=0; while(n){ n/=5; ans+=n; } return ans; }};
0 0
- 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
- IDEA读取本地文件进行处理的方式
- C语言atexit()函数
- 贪心算法总结
- nginx的sbin和conf文件不在同一目录怎么装安全狗
- Java 反射---获取Class的三种方式
- leetcode 172. Factorial Trailing Zeroes
- 链表相交问题
- C语言基础
- iOS开发学习笔记——文本框(UITextField)及键盘遮挡处理和回收
- Java反射——动态加载类
- 2133232
- 开发Flex for Android第一个ANE(ActionScript Native Extensions)本地扩展
- python 模块 chardet下载方法及介绍
- bzoj 1497(最小割,最大权闭合子图)