N的阶乘的长度 V2(斯特林近似)
斯特灵公式是一条用来取n阶乘近似值的数学公式。
n!≈2πn−−−√∗(ne)nn!≈2πn∗(ne)n
斯特林公式可以用来估算某数的大小,结合lg可以估算某数的位数,或者可以估算某数的阶乘是另一个数的倍数。
题目描述
输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。
Input
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 1000) 第2 - T + 1行:每行1个数N。(1 <= N <= 10^9)Output
共T行,输出对应的阶乘的长度。Input示例
3
4
5
6
Output示例
2
3
3
ac代码:
#include <iostream>
#include <cmath>
using namespace std;
#define ll long long
#define pi 3.1415926
#define e 2.718281828459
int main()
{
int t;
cin>>t;
while(t--){
int n;
cin>>n;
ll sum=0.5*log10(2.0*pi*n)+n*log10(n*1.0/e)+1;
cout<<sum<<endl;
}
return 0;
}
评论