leetcode:172 Factorial Trailing Zeroes-每日编程第二十四题
2015-12-15 20:32
489 查看
Factorial Trailing Zeroes
Total
Accepted: 44351 Total
Submissions: 144160 Difficulty: Easy
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
思路:
1).n!=n*(n-1)*(n-2)*...*2*1,只有当因子有2,5的时候,在n!的末尾才会产生10.
2).因为5>2,无论n为多大,在n!当中,5的数量肯定比2少。所以,我们只需要计算n!有多少个因子5就行了。
3).循环体可以这么理解,第一次循环,有几个5的倍数,第二次循环,有几个25的倍数..第m次循环,有几个5^m的倍数。直到n<5^m。
Total
Accepted: 44351 Total
Submissions: 144160 Difficulty: Easy
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
思路:
1).n!=n*(n-1)*(n-2)*...*2*1,只有当因子有2,5的时候,在n!的末尾才会产生10.
2).因为5>2,无论n为多大,在n!当中,5的数量肯定比2少。所以,我们只需要计算n!有多少个因子5就行了。
3).循环体可以这么理解,第一次循环,有几个5的倍数,第二次循环,有几个25的倍数..第m次循环,有几个5^m的倍数。直到n<5^m。
class Solution { public: int trailingZeroes(int n) { int sum = 0; while(n>0){ sum+=n/5; n/=5; } return sum; } };
相关文章推荐
- C语言: 桶排序
- python之内存概念
- 在c++代码中执行bat文件
- C++中指针与引用的关系
- call和goto、eof、%~0怎么理解这段代码
- Java3D学习篇<第一个Java3D程序>
- PHP isset()与empty()的使用区别详解
- 第一个JavaWeb工程
- Github教程(1)
- 【先进的算法】Lasvegas算法3SAT问题(C++实现代码)
- YYKit系列之——YYModel使用(摘自GitHub)
- Qt之国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)
- Qt之国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)
- 智力拼图问题–关于回溯和并行:单线到多线程再到GPU编程的进阶(一)
- 虚函数表测试代码 帮助理解虚函数表
- C语言for语句用法详解
- eclipse 4.2版本以上无法安装个别插件
- 数组引用:C++ 数组做参数 深入分析
- 编程错误总结(一)
- C语言运算符的优先级和结合性一览表