当前位置: 代码迷 >> 综合 >> 51nod 1130 求阶乘的位数
  详细解决方案

51nod 1130 求阶乘的位数

热度:104   发布时间:2023-09-27 21:47:52.0

斯特林公式-求解n!的位数

题目链接

上述为斯特林阶乘快速求解的近似公式,这个误差值随着n的增大而减小

求位数就是log10(x)即可,但是注意到,log10(x)求出的整数部分+1才是x的位数

#include<iostream>
#include<cmath>
using namespace std;
#define pi 3.141592653589793
#define e 2.718281828459
int main(){double n;int t;cin>>t;while(t--){cin>>n;double value = (0.5*log10(2*pi*n)+n*log10(n/e));cout<<	(long long)value+1<<endl;}	
} 

具体公式推导参考百度百科