码迷,mamicode.com
首页 > 其他好文 > 详细

N!的位数

时间:2016-09-06 21:19:52      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

Description

求N!的位数

Input

输入第一行为一个正整数 n(1<=n<=25000)。

Output

输出 n!的位数。

Sample Input

10
20

Sample Output

20
19

思路

求一个数的位数,我们只需要对其进行以10为底的对数运算。假设有个数是四位数,那么其介于1000-10000中间,log10(1000)-log10(10000),结果为3-4,取4.。
另外也可以通过斯特林公式求解。技术分享这就是说,对于足够大的整数n,这两个数互为近似值。更加精确地:技术分享技术分享
#include<stdio.h>  
#include<math.h>  
  
int main()  
{  
    int N,i;  
    double cnt = 0;  
    scanf("%d",&N);  
    for (i = 1;i <= N;i++)  
    {  
        cnt += log10(i);  
    }  
    printf("%d\n",int(cnt) + 1);  
    return 0;  
}  

  

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

  

N!的位数

标签:

原文地址:http://www.cnblogs.com/zzy19961112/p/5846961.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!