您的位置:首页 > 大数据 > 人工智能

LeetCode:Factorial Trailing Zeroes

2016-06-15 12:17 513 查看


Factorial Trailing Zeroes

Total Accepted: 61757 Total
Submissions: 185808 Difficulty: Easy

Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
Credits:

Special thanks to @ts for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

Hide Tags
Math

Hide Similar Problems
(H) Number of Digit One

思路:

1.题意求n!中后缀0的个数。

2.n!=1*2*3*...*n,中的0由(2^i) * (5^j)得来。

3.即要计算min(i,j)。

4.j<=i,直观的来看:i是逢2进1,j是逢5进1。固只需计算5的个数。

例如:10!=1*2*3*4*5*6*7*8*9*10
= ..*(2^4)*...*(5^2)..

求10!中5的个数,即求 k = n/5 + n/25 + n/125 + ....+n/5^j,其中j<=n。

c++ code:

class Solution {
public:
int trailingZeroes(int n) {
int x = 5;
int ret = 0;
while(x <= n) {
ret += n/x;
x *= 5;
}
return ret;
}
};


或:

class Solution {
public:
int trailingZeroes(int n) {
int ret = 0;
while(n) {
ret += n/5;
n /= 5;
}
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: