hdu1018 Big Number 解题报告

数学题 暴力水过 估计是想卡暴力运算的时间 但是没卡好 当然第一遍判断是不是0(之前以为0和其他情况不同 结果发现我错了 不用判断0的情况)

求一个数多少位:int  (log10(x)+1)

log10(N!)=log10(0)+log10(1)........log(N)

数学太差了。。。。。

标准做法应该是斯特林公式 不过看不懂 回头补上吧 lnN!=NlnN-N+0.5*ln(2*N*pi)   这个是神马东西?? 可以直接用 ??

 1 /*
 2   Name:hdu1018
 3   Copyright:
 4   Author:yujiaao
 5   Date:
 6   Description:hdu
 7 */
 8 #include<iostream>
 9 #include<cstdio>
10 #include<cmath>
11 using namespace std;
12 int main()
13 {
14 
15 //    freopen("C:\\Users\\yujiaao\\Desktop\\测试专用\\in.txt","r",stdin);
16 //    freopen("C:\\Users\\yujiaao\\Desktop\\测试专用\\out.txt","w",stdout);
17     int ncase,i,j,a;
18     double sum;
19     scanf("%d",&ncase);
20     while(ncase--)
21     {
22             scanf("%d",&a);
23             sum=0;
24             for(i=1;i<=a;i++)
25             {
26                 sum+=log10(i);    
27             }
28             printf("%d\n",int (sum+1));
29     }
30 //    system("pause");
31     return 0;
32 }

 

posted on 2012-07-04 12:21  渔家傲  阅读(200)  评论(0编辑  收藏  举报

导航