1、计算n!的位数
2、估计lg(n!)的大小
斯特林公式:(n越大越精确)
更加精确地:
或者:
相关题目:假的数学游戏
1、计算n!的位数
对于整数x,我们知道其位数为[lgx]+1
所以对于n!,其位数[lg(n!)]+1
根据斯特林公式:
故其位数res是:
代码实现:
#include <bits/stdc++.h>
using namespace std;
#define e exp(1)
#define pi acos(-1)
typedef long long ll;
double logy(double x,int y)//以y为底x的对数
{
return log(x)/log((double)y);
}
ll f(ll x,int y)//计算x的阶乘在y进制下的位数
{
double res=logy(2*pi*(double)x,(double)y)/2.0+(double)x*logy((double)x/e,(double)y);
ll ans=res;
return ans+1;
}
2、计算lg(n!)
代码实现:
#include <bits/stdc++.h>
using namespace std;
#define e exp(1)
#define pi acos(-1)
typedef long long ll;
ll x,n;
double f(ll x)//计算以10为底x!的对数
{
double res=log10(2*pi*(double)x)/2.0+(double)x*log10((double)x/e);
return res;
}