/*
功能:求一个数的阶乘的位数
公式:
log10(n!)=log10(1*2*3…*n)=log10(1)+log10(2)+…+log10(n)
log10(n!)=log10(sqrt(2*pi*n))+n*log10(n/e)
推倒:
n!=sqrt(2*π*n)*((n/e)^n)*(1+1/(12*n)+1/(288*n*n)+O(1/n^3))
π=acos(-1)
e=exp(1)
*/
#include<iostream>
#include<cmath>
#define PI acos(-1)
#define E exp(1)
using namespace std;
int log(int n);
int main(void)
{
int count;
cin>>count;
int n;
while(count--)
{
cin>>n;
cout<<log(n)<<endl;
}
return 0;
}
int log(int n)
{
return (int)(log10f(sqrt(2*PI*n))+n*log10f(n/E))+1;
}
1018 Big Number
最新推荐文章于 2025-01-14 08:45:00 发布