給乙個數x,len=log10(x)+1就是x這個數的長度
當n的值不超過10^6時
那麼n的階乘長度=log10(1*2*3*4*……*n)+1=log10(1)+log10(2)+log10(3)+
log10(4)+……+log10(n)+1
#include#includeint main()
當n比較大時,再用上面這種方法就有點笨拙了
斯特林公式斯特林公式n!=sqrt(2*pi*n)*(n/e)^n
n!的長度len=log10(sqrt(2*pi*n)*(n/e)^n)+1 =0.5*log10(2.0*pi*n)+n*log10(n/e)+1
#include #include #include #include using namespace std ;
#define pi 3.1415926
#define e 2.718281828459
int main()
//斯特林公式n!=sqrt(2*pi*n)*(n/e)^n
len = 0.5*log10(2.0*pi*n)+n*log10(n*1.0/e)+1;
printf("%i64d\n",len) ;
}}
n的階乘的長度
1130 n的階乘的長度 v2 斯特林近似 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 輸入n求n的階乘的10進製表示的長度。例如6 720,長度為3。input 第1行 乙個數t,表示後面用作輸入測試的數的數量。1 t 1000 第2 t 1行 每行1個數n。1 n...
求n的階乘(10000)
題意 如題目 思路 用乙個陣列,陣列的每一位存乙個8位數,兩個for迴圈,不斷從1開始累乘。include include include include using namespace std const int maxn 100000000 注意不能超過long long 的表示範圍 long ...
(Java)求n的階乘
當n整數值較小時,無須考慮n!是否會超出資料型別的範圍 public static long getnfactorial int n return n getnfactorial1 n 1 public static long getnfactorial1 int n long sum 1l for...