当前位置: 代码迷 >> 综合 >> 【51NOD-1058】 N的阶乘的长度(log10()函数的应用)
  详细解决方案

【51NOD-1058】 N的阶乘的长度(log10()函数的应用)

热度:12   发布时间:2023-12-06 19:42:18.0

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 ;
}