【Leetcode - 172】阶乘后的零(思维)
給定一個(gè)整數(shù) n ,返回 n! 結(jié)果中尾隨零的數(shù)量。
提示 n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1
示例 1:
輸入:n = 3
輸出:0
解釋:3! = 6 ,不含尾隨 0
示例 2:
輸入:n = 5
輸出:1
解釋:5! = 120 ,有一個(gè)尾隨 0
示例 3:
輸入:n = 0
輸出:0
?
提示:
0 <= n <= 104
?
進(jìn)階:你可以設(shè)計(jì)并實(shí)現(xiàn)對(duì)數(shù)時(shí)間復(fù)雜度的算法來(lái)解決此問題嗎?
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/factorial-trailing-zeroes
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
解題報(bào)告:
藍(lán)橋老題了。
先轉(zhuǎn)化成,求n!里有幾個(gè)2和幾個(gè)5。下面拿5舉例:
再轉(zhuǎn)化成,這n個(gè)數(shù)里有幾個(gè)數(shù)有1個(gè)5(即n/5),這n個(gè)數(shù)里有幾個(gè)數(shù)有2個(gè)5(即n/25),等等、
所以做法就是這樣了。
AC代碼:
class Solution { public:int trailingZeroes(int n) {int x = 5, c2 = 0, c5 = 0;while(n/x >0) {c5 += n/x;x*=5;} x=2;while(n/x>0) {c2 += n/x;x*=2;}return min(c2, c5);} };總結(jié)
以上是生活随笔為你收集整理的【Leetcode - 172】阶乘后的零(思维)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最近十年,我国人均GDP增速是美国的四倍
- 下一篇: 【Tyvj - 1305】最大子序和(单