hdu 1018 //求阶乘位数

来源:互联网 发布:linux 压缩包 编辑:程序博客网 时间:2024/05/20 02:26

//x=lg(n!)=lg(n)+lg(n-1)+lg(n-2)+...+lg2+lg1;

//最终位数为x+1的int型向下取整;

//注意c++中log(n) 默认为ln(n),x加完后一起除以ln10,否则 TLE hdu <wbr>1018 <wbr>//求阶乘位数

 

 

#include"iostream"
#include"math.h"
using namespace std;

int main()
{
    intn,i,num;
    doublex;
   scanf("%d",&num);   
   while(num--)
    {
      scanf("%d",&n);
      x=0;      
      for(i=1;i<=n;i++)
      {
                       x+=log(0.0+i);
      }
      x=x/log(10.0);
      printf("%d\n",(int)(x+1));
               
    }
   getchar();getchar();
    return0;
}

原创粉丝点击