階乘後的零 LeetCode 172

2021-09-24 08:46:02 字數 679 閱讀 2737

10進製數結尾的每乙個0都表示有乙個因數10存在,任何進製都一樣,對於乙個m進製的數,讓結尾多乙個0就等價於乘以m。 10可以分解為2 × 5——因此只有質數2和5相乘能產生0,別的任何兩個質數相乘都不能產生0,而且2,5相乘只產生乙個0。 所以,分解後的整個因數式中有多少對(2,5),結果中就有多少個0,而分解的結果中,2的個數顯然是多於5的,因此,有多少個5,就有多少個(2, 5)對。

所以,討論乙個數的階乘結尾有幾個0的問題,就被轉換成了1到n所有這些數的質因數分解式有多少個5的問題。

由特殊推廣到一般的論證過程可得:

1、 每隔5個,會產生乙個0,比如 5, 10 ,15,20 ...

2 、每隔 5×5 個會多產生出乙個0,比如 25,50,75,100。 因為25、50這種是由「5乘以5乘以x」得到的,因此直接有2個5,所以多了乙個,下面同理。

3 、每隔 5×5×5 會又多出乙個0,比如125,250...

所以100!末尾有多少個零為:100/5+100/25=20+4=24

那麼1000!末尾有多少個零呢?同理得: 1000/5+1000/25+1000/125=200+40+8=248

class

solution

return ret;

}};複製**

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 本題如果暴力乘計數的話必然會爆範圍,因為數字增長的速度太快了 其實乘法裡面,末...