标签:leetcode
Factorial Trailing Zeroes
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
求 n!中,末尾的0连续有多少个。
例如 10!=10*9*8*7*6*5*4*3*2*1 所以末尾0的个数为2
因为,n!可以写成质因数的乘积,n!=2x*3y*5z*...... ,2*5=10, 故末尾0的个数等于min(x,z),即2与5的个数的最小值。
5的个数比2的个数大,因为n!中,每两个数就含有2,每5个数才含有5。
所以只用求n!的质因数成绩中,5的个数即可。
n/5得到5个数,但像25,75.....这种有多个5的,就需要再n/5
class Solution { public: int trailingZeroes(int n) { int ans = 0; while (n) { ans += n/5; n /= 5; } return ans; } };
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
版权声明:本文为博主原创文章,未经博主允许不得转载。
leetcode-172-Factorial Trailing Zeroes
标签:leetcode
原文地址:http://blog.csdn.net/u014705854/article/details/48134637