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!的精確位數
**:#include "iostream"
#include "math.h"
using namespace std;
int main()
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 表示成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...