1058 N的阶乘的长度
输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。
收起
输入
输入N(1 <= N <= 10^6)
输出
输出N的阶乘的长度
输入样例
6
输出样例
3
思路:
1、使用斯特林公式
n的阶乘长度=0.5*log10(2*PI*n)+n*log10(n/e)+1;(这里不包含n==1的情况,需要特判)
e=exp(1);PI=acos(-1.0);
2、使用log10函数:log10(x)+1就是x的长度。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;int main()
{int n;scanf("%d",&n);double ans=0;//之后有+=需要保存精度,所以要用doublefor(int i=1;i<=n;i++)ans+=log10(i);printf("%d\n",int(ans+1));return 0 ;
}