要知道一个数字的位数是多少,我们可以用log10函数求得。例如,对于一个数,N=10,10!=3628800,而log10(3628800)=6.559763033,那么只要将这个数向上取整,就是7,就是10!的位数
有两种方法求n!
第一种 strling公式 用时为0ms
#include<stdio.h>
#include<math.h>
#define e 2.7182818284590452354
#define pi 3.141592653589793239
double strling_dig(int n){
return 0.5*log10(2.0*pi)+(n+0.5)*log10(n*1.0)-n*log10(e);
}
int main(){
int t,i,m,n;
scanf("%d",&t);
for(i=0;i<t;i++){
scanf("%d",&n);
if(n==1||n==0) printf("1/n");
else{
m=(int)(strling_dig(n)+1);
printf("%d/n",m);
}
}
return 0;
}
第二种方法
1+lg(1)+lg(2)+..+lg(n)
第二种方法用时较多在此不做解释