两年多没再弄个ACM没再刷过题,最近为了看看算法觉得重新刷poj啦!!而且和刘先森一起!此处应有掌声~
先安codeblocks,简单好用而且界面好看啊!而且现在也智能很多啦!
先来一个简单点的热热身~poj1423
POJ 1423 BIg Number
描述:求n得阶乘的位数,1<=n<=10^7
分析:数值范围大,暴力求解会超时。刘先森亲身证明了,哈哈哈~
用斯特林(string)公式:![]()
log10(n!) = log10(2*pi*n) /2+ n * log10(n/e) ;
代码:
#include <iostream>
#include <cmath>
using namespace std;
const double pi=3.1415926,e = 2.7182818284590452354;
int main()
{
int n,m,cnt;
cin>>n;
while(n--)
{
cin>>m;
cnt=(int)(log10(2*pi*m)/2.0+m*log10(m/e));
cnt++;
cout<<cnt<<endl;
}
return 0;
}
本文介绍了如何使用斯特林公式解决POJ 1423大数阶乘位数的问题,通过避免直接计算阶乘的方式减少计算复杂度。
2676

被折叠的 条评论
为什么被折叠?



