两年多没再弄个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;
}