方法1
#include <stdio.h>
#include <math.h>
int main()
{
int data = 0;
double bit = 0;
int count,i;
scanf("%d", &count);
while (count-- !=0 && scanf("%d",&data)==1)
{
bit = 0.0;
for (i=1; i<=data; i++)
{
bit += log10(i);
}
printf("%d/n", (int)bit + 1);
}
return 0;
}
#include<stdio.h>
#include<math.h>
#define PI 3.14159265
int main()
{
int len,N;
int count;
scanf("%d", &count);
while(count-- != 0 && scanf("%d",&N)!=EOF)
{
if(N==1)
len=1;
else
len=(int)ceil((N*log(N)-N+log(2*N*PI)/2)/log(10));ceil求上界,即不小于某值的最小整数 //string公式lnN!=NlnN-N +0.5*ln( 2*N*pi) //而N次方阶乘的位数等于:
// log10(N!)取整后加1
// log10(N!)=lnN!/ln(10)
//ceil为求上界,即不小n的最小整数
//log取自然对数
printf("%d/n",len);
}
return 0;
}