LeetCode 數學 階乘後的零

2022-08-20 09:00:14 字數 873 閱讀 3511

給定乙個整數 n,返回 n! 結果尾數中零的數量。

示例:

輸入: 3

輸出: 0

解釋: 3! = 6, 尾數中沒有零。

輸入: 5

輸出: 1

解釋: 5! = 120, 尾數中有 1 個零.

說明:

直接求階乘然後數 0 不可行,因為可能溢位,而且計算也比較慢。

首先分析一下:n! = 1*2*3*...*n,如果階乘中的因子能夠被分解為 2 和 5 相乘的形式,則將其分解,所以n! = 1*2*3*...*7*(2*4)*9*(2*5)*...*n,只有2*5能產生乙個零。所以我們統計 n! 中有多少個 2 和多少個 5 參與相乘就行了。因為 2 的個數大於 5,所以我們只需要看 5 的個數有多少就行了。

假設 n = 100,首先每 5 個數字都能分解出來 1 個 5,這些數字是 5、10、15、20、...、95、100,共 n/5 = 100/5 = 24 個;

有些數字不止能分解為 1 個 5,例如 25,所以對於 5、10、15、20、...、95、100,我們將 5 提出來,得到 5(1、2、3、4、...、20),則 (1、2、3、4、...、20)共 20 個數,又可以提取出 20/5 = 4 個 5,分別是 25、50、75、100,這相當於 100/5/5 = 100/(5^2);

以此類推,直到無法提取 5 為止。

演算法如下:

**如下:

class solution 

return ans;

}};

1、

LeetCode 階乘後的零

一.題目描述 給定乙個整數 n,返回 n 結果尾數中零的數量。示例 1 輸入 3 輸出 0 解釋 3 6,尾數中沒有零。示例 2 輸入 5 輸出 1 解釋 5 120,尾數中有 1 個零.說明 你演算法的時間複雜度應為 o log n 二.解法 老實說,這道題,博主並沒有做出來,是抄的部落格大神的答...

LeetCode 階乘後的零

給定乙個整數 n,返回 n 結果尾數中零的數量。示例 1 輸入 3 輸出 0 解釋 3 6,尾數中沒有零。示例 2 輸入 5 輸出 1 解釋 5 120,尾數中有 1 個零.說明 你演算法的時間複雜度應為 o log n 思路分析 不難發現,只用出現2的倍數 5的倍數相乘才會在末尾出現零。並且2的倍...

leetcode 階乘後的零

給定乙個整數 n,返回 n 結果尾數中零的數量。示例 1 輸入 3 輸出 0 解釋 3 6,尾數中沒有零。示例 2 輸入 5 輸出 1 解釋 5 120,尾數中有 1 個零.說明 你演算法的時間複雜度應為 o log n 本題如果暴力乘計數的話必然會爆範圍,因為數字增長的速度太快了 其實乘法裡面,末...