H-N!的位数(斯特林公式)

版权声明:Andy https://blog.csdn.net/Alibaba_lhl/article/details/79964505
输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。
Input 输入N(1 <= N <= 10^6) Output 输出N的阶乘的长度 Sample Input
6
Sample Output
3

  • 解题思路:n! 的位数即为:log10(n!) + 1
  • 由于只是求位数,所以没有必要求 n! 的精确值。
  • 斯特林公式:
  • AC Code
#define _USE_MATH_DEFINES
#include<cstdio>
#include<cmath>
                            //斯特林公式 n! 约等于 sqrt(2*PI*n)*(n/e)^n
int main()                 //判断n的长度,就是log10(n!)+1.
{
	int n;
    scanf("%d",&n);
    int len = 0.5*log10(2*n*M_PI)+n*log10(n/M_E)+1;
    printf("%d",len);
    return 0;

}

阅读更多

没有更多推荐了,返回首页