ACM 大數N 的位數公式

2021-07-13 06:02:25 字數 714 閱讀 5740

!求解位數

下面介紹兩種方法直接求階乘結果的位數:

方法一 可以將n!表示成10的次冪,即n!=10^m(10的m次方)則不小於m的最小整數就是 n!的位數,對該式兩邊取對數,有  

m =log10^n!

即: m = log10^1+log10^2+log10^3...+log10^n

迴圈求和,就能算得m值,該m是n!的精確位數

**:[cpp]view plain

copy

#include "iostream"

#include "math.h"

using

namespace

std;  

intmain()  

printf("%d\n"

,(int

)d+1);   

}  return

0;  

}  

方法二 利用斯特林(stirling)公式的進行求解。下面是推導得到的公式:

res=(long)( (log10(sqrt(4.0*acos(0.0)*n)) + n*(log10(n)-log10(exp(1.0)))) + 1 );

當n=1的時候,上面的公式不適用,所以要單獨處理n=1的情況!

有關斯特林(stirling)公式及其相關推導,這裡就不進行詳細描述,

這種方法速度很快就可以得到結果。

ACM 大數N 的位數公式

n 求解位數 下面介紹兩種方法直接求階乘結果的位數 方法一可以將n 表示成10的次冪,即n 10 m 10的m次方 則不小於m的最小整數就是 n 的位數,對該式兩邊取對數,有 m log10 n 即 m log10 1 log10 2 log10 3.log10 n 迴圈求和,就能算得m值,該m是n...

求大數n 的位數

也是壇裡面的問題 已知正整數 n 求 n!的十進位制數共有多少位。這個 n 怎麼辦?n 的增長率是很可怕的,比 e n 還要快,其實就是 o n n 當 n 值 較 大時,就不能忍了。這個 較 有多大呢?等後面算完了就知道了。遞迴算 n 便是尾遞迴來說,便是棧展得開,效率也受不了,便是效率受得了,也...

n階乘,位數,log函式,斯特林公式

一.log函式 標頭檔案 include 使用 引入 include 以e為底 log exp n 以10為底 log10 n 以m為底 log n log m 重點 log 與log10 不是相同的函式 double log double x 計算乙個數字的自然對數 double log10 do...