51nod 1058 阶乘的位数

来源:互联网 发布:黑格尔的哲学思想知乎 编辑:程序博客网 时间:2024/06/13 21:26

斯特林近似公式如下:

以10为底的n!的对数,然后向下取整再加一。即为n!的十进制位数。

log10(n!)= 0.5*log10((2πn))+nlog10(n/e

一定要化简成这种形式,指数移到log前面,减少计算量。

#include <stdio.h>#include <math.h>int main(){int n, ans;double temp;scanf("%d", &n);temp = 0.5 * log10(2*acos(-1.0) * n) + n*log10(n / exp(1.0));ans = (int)temp + 1;printf("%d\n", ans);}



原创粉丝点击