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 }