rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml">
这个题目需要用到斯特灵公式。其公式如下:
lnN!=NlnN-N+0.5ln(2N*pi)
还有,一个数M的位数是等于log10(M)取整后加1的
有了这些数学理论就好办了。
因为lnN! /ln10 = log10(N!)
那么len = ceil((N*log(N)-N+log(2*N*PI)/2)/log(10))
到此,整个题目就解决了。关键是这个公式。
rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml">源代码如下:
- #include<stdio.h>
- #include<math.h>
- #define PI 3.1415926
- int main()
- {
- long num;
- int len;
- int count;
- scanf("%d",&count);
- while(count>0){
- scanf("%ld",&num);
- if(num==1)
- printf("%ld/n",num);
- else{
- len = ceil((num*log(num)-num+log(2*num*PI)/2)/log(10));
- printf("%d/n",len);
- }
- count--;
- }
- return 0;
- }