51nod 1130 N的階乘的長度 V2(斯特林近似)
阿新 • • 發佈:2018-11-25
輸入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); } }