CI19 3 n的階乘末尾0的個數

2021-06-16 18:36:22 字數 550 閱讀 2320

實現乙個演算法,計算n的階乘末尾有多少個0。

思路:如果先計算n!,然後再計算末尾0的個數,這種方法不可取,因為n!隨時可能溢位。

階乘末尾有0,肯定是2和5相乘而得。所以我們只需要計算因子2和因子5的對數。可以發現因子2的出現次數要大於因子5的出現次數,所以只計算因子5的個數即可。

5!,  包含1*5, 1個5

10!, 包含1*5,2*5, 2個5

15!, 包含1*5,2*5,3*5, 3個5

20!, 包含1*5,2*5,3*5,4*5, 4個5

25!, 包含1*5,2*5,3*5,4*5,5*5, 6個5

給定乙個數n,n/5表示從1-n中包含乙個因子5的數的個數,n/5/5表示包含兩個因子5的數的個數,以此類推。

#include using namespace std;

int numofzero(int n)

return res;

}int main()

return 0;

}

N階乘末尾0的個數

輸入乙個正整數n,求n 即階乘 末尾有多少個0?比如 n 10 n 3628800,所以答案為2 輸入為一行,n 1 n 1000 輸出乙個整數,即題目所求要判斷末尾有幾個0就是判斷可以整除幾次10。10的因子有5和2,而在0 9之間5的倍數只有乙個,2的倍數相對較多,所以本題也就轉換成了求n階乘中...

n的階乘末尾含0的個數

本博主曾被問過這樣乙個問題 求n的階乘中末尾含有多少個0。例如n 10,n 3628800,那麼n 末尾有兩個0。直接計算n 的值顯然不合適,因為n 數值太大,很容易溢位。而且這種無腦的計算方式,顯然不適合面試的時候裝nbility拿高薪offer。本博主當時被問這個問題的時候的第一反應就是 要相乘...

n的階乘問題 階乘位數 階乘末尾0的個數

初來乍到,望高手指教!原有解決n的階乘的方式 迭代,如果是大資料的話,迭代會吃掉大量記憶體,導致記憶體溢位 用平時的迭代解決n的階乘問題 在計算21的階乘時,結果已然為負數,超出整型資料表示範圍。計算34的階乘是,結果已然為0 此段 將n的階乘問題解決,實現無限大數的階乘!無限 兩字有點牽強,數字太...