hdu 1018(求大数位数)

来源:互联网 发布:易吧进销存软件下载 编辑:程序博客网 时间:2024/05/22 15:55

题目大意: 输入n,然后求n的阶乘n!的位数


解题思路:

1)使用斯特林公式lnN!=NlnNN+0.5ln(2N*pi)


代码如下:

/* * 1018_2.cpp * *  Created on: 2013年8月11日 *      Author: Administrator */#include <iostream>#include <cmath>using namespace std;//acos相当于数学中arccos,反余弦函数const double PI  = acos(-1.0);int main(){int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);double sum = (n*log(n) - n + 0.5*log(n*2*PI))/log(10);cout<<(int)sum + 1<<endl;}}