微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

hdu 1018(求大数位数)

题目大意: 输入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;
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐