如何口算乙個比較大的數字的階乘的位數

2021-10-08 21:21:28 字數 438 閱讀 4438

今天在寫一道題

的時候看大佬開了個陣列,我一直想不通如何確定這個陣列的大小,為此查了很多資料,自己最終總結出了一套方法

eg:1000!

直接計算n!的數值,然後再去數字數,這個很難,因為n!很有可能超過int(32bit) 或long(64bit)的表達範圍。

換一種思路,假設要求的位數為x, 那麼一定滿足 10^(x-1) <=n!<10^x。兩邊取10為底的對數,得到x-1<=log10(n!)log10(n!) = log10(n)+log10(n-1)+log10(n-2)+…+log10(1)

所以:為了貫徹取大不取小的理念,我們假設有1000個lg1000相加,共有3000位,所以陣列開在3000就完全o98k了(▽

),實際的位數為2568位,其實也差不多,好了,這個好辦法就是這樣的啦~~~

學到就是賺到

階乘 第乙個不是零的數字

試題 演算法訓練 p0505 資源限制 時間限制 1.0s 記憶體限制 256.0mb 乙個整數n的階乘可以寫成n 它表示從1到n這n個整數的乘積。階乘的增長速度非常快,例如,13!就已經比較大了,已經無法存放在乙個整型變數中 而35!就更大了,它已經無法存放在乙個浮點型變數中。因此,當n比較大時,...

階乘後的零 階乘後倒數第乙個非零數字

給定乙個整數 n,返回 n 結果尾數中零的數量。示例 1 輸入 3 輸出 0 解釋 3 6,尾數中沒有零。示例 2 輸入 5 輸出 1 解釋 5 120,尾數中有 1 個零.在1 9這9個數字裡面,只有5和乙個偶數才可以乘積得到0,遇到乙個 10為0的數就多乙個0,所以就可以以5來判斷這個結果,如下...

乙個比較特殊的字元

位置在鍵盤中數字鍵 1 的左邊,其上檔符號是 使用shift鍵可以換擋為英文輸入法後,單機該鍵即可輸入。由於計算機顯示的原因,反單引號非常容易和單引號 混淆。一 反單引號是西方符號,主要用在linux的bash中。同時在數學軟體mathematica中也有應用。1.在bash中,其用法同 一樣,用 ...