这次碰上的问题更加奇葩.
需要求N次阶乘之后一共有多少位.
方法一,取log10既是N次阶乘的位数
又给定是阶乘,所以可以分解成log的加法运算.
代码如下
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f3f
double x;
int t,n;
int s[1000005];
int main()
{
//freopen("1.txt","r",stdin);
std::ios::sync_with_stdio(false);
for(int i=1; i<=1000005; i++)
{
x+=log10(i);
int ans= ceil(x);
s[i]=ans;
}
s[0]=1;s[1]=1;
while(cin>>n)
{
cout<<s[n]<<endl;
}
return 0;
}第二种求法是斯特林公式,具体实现参照百度
第三种更加奇怪的姿势是转换精度变成double操作

本文介绍了计算N次阶乘后结果位数的三种方法:使用log10进行位数计算、利用斯特林公式和通过double精度计算。提供了C++代码实现,并探讨了不同方法的特点。
615

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



