斯特林公式:N! = sqrt(2*PI*N)*(N/e)^N 顺便复习一下计算位数的那个公式 :len = log10(N) + 1;
然后,这道题就简单了。
PI = acos(0.0). E = exp(1.0);
15ms 1864KB
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
#define PI acos(0.0)
#define E exp( 1.0 )
int main(){
int T;
ll N;
scanf("%d", &T);
while(T--){
scanf("%lld", &N);
ll len;
//len = 0.5 * log10(4 * PI * N) + N * log10(N * 1.0 / E) + 1;
len = ( log10( sqrt( 4.0 * PI * N ) ) + ( log10( N ) - log10( E ) ) * N + 1.0 );
if(N == 1)
printf("1\n");
else
printf("%lld\n", len);
}
return 0;
}
本文介绍如何使用斯特林公式来估算大整数的阶乘,并计算其位数。通过数学公式和C++代码实现,展示了一种高效计算方法。
438

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



