1. 程式人生 > >51nod 1130 N的階乘的長度 V2(斯特林近似)

51nod 1130 N的階乘的長度 V2(斯特林近似)

輸入N求N的階乘的10進製表示的長度。例如6! = 720,長度為3。  

輸入

第1行:一個數T,表示後面用作輸入測試的數的數量。(1 <= T <= 1000)
第2 - T + 1行:每行1個數N。(1 <= N <= 10^9)

輸出

共T行,輸出對應的階乘的長度。

輸入樣例

3
4
5
6

輸出樣例

2
3
3
 斯特林公式:n!≈(2πn)^(1/2)*(n/e)^n. 對他取以10為底的對數即可。 程式碼:
#include <iostream>
#include 
<cstdio> #include <cmath> #define MAX 50000 #define PI 3.1415926 using namespace std; int dp[MAX],n,d,c; int main() { int t; scanf("%d",&t); for(int i = 0;i < t;i ++) { scanf("%d",&n); printf("%lld\n",(long long)((log10(2 * PI * n) / 2 + n * (log10(n) - log10(exp(1
))))) + 1); } }