zoukankan      html  css  js  c++  java
  • 斯特林公式

    题目来源:HDOJ1018(求阶乘的位数)

    斯特林公式简介(维基百科):

    斯特灵公式是一条用来取n阶乘近似值数学公式。一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用,而且,即使在n很小的时候,斯特灵公式的取值已经十分准确。

    公式为:

    n! \approx \sqrt{2\pi n}\, \left(\frac{n}{e}\right)^{n}.

    这就是说,对于足够大的整数n,这两个数互为近似值。

    n增加时,(ln n!)与o (n ln nn)之比趋于1。

    几乎超时:

     1 # include <stdio.h>
    2 # include <math.h>
    3
    4 int main()
    5 {
    6 int T, x, i;
    7 double sum;
    8
    9 scanf("%d", &T);
    10 while (T--)
    11 {
    12 scanf("%d", &x);
    13 for (sum=0, i=1; i <= x; ++i)
    14 sum += log10(i);
    15 printf("%d\n", (int)sum+1);
    16 }
    17
    18 return 0;
    19 }

    0ms:

     1 # include <stdio.h>
    2 # include <math.h>
    3
    4 int main()
    5 {
    6 int T, n;
    7
    8 scanf("%d", &T);
    9 while (T--)
    10 {
    11 scanf("%d", &n);
    12 printf("%d\n",(int)(n*log10(n/exp(1.0))+0.5*log10(2.0*n*4.0*atan(1.0)))+1);
    13 }
    14
    15 return 0;
    16 }




  • 相关阅读:
    (二)正反向代理
    (一)服务器架构详解
    斐波那契数列
    旋转数组的最小值
    23 入栈 出栈
    重建二叉树
    22 大端序和小端序
    反转单链表
    替换空格
    二维数组中的查找
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2391131.html
Copyright © 2011-2022 走看看