【数据结构 | C语言】单身狗进化

输入格式:输入第一行为一个正整数 n(1<=n<=25000)。输出格式:输出 n!的位数。

输入示例:10 输出示例:7

//log10(2*pi*n)/2 + n*log10(n/e) + 1
#include <bits/stdc++.h>
#define PI 3.141592654
#define E 2.71828182846
using namespace std;
int main(){
	int n;cin>>n;int result;
	result=log10(2*PI*n)/2+n*log10(n/E)+1;
	cout<<result;return 0;
}

考察斯特林公式。

‌斯特林公式(Stirling’s approximation)是一条用来取n的阶乘的近似值的数学公式‌。
当需要为某些极大的n求阶乘时,由于阶乘的计算复杂度为线性,常见的方法可能变得不可接受。斯特林公式能够将求解阶乘的复杂度降低到对数级,极大地提高了计算效率。
‌即使在n较小的时候,斯特林公式的取值也已经十分准确,与准确值的误差极小。因此,在需要估计n!的值时,使用斯特林公式通常足够满足要求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值