0
点赞
收藏
分享

微信扫一扫

hdu 1018(求大数位数)


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


解题思路:

1)使用斯特林公式lnN!=NlnN-N+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;
	}
}



举报

相关推荐

0 条评论