N!的位数

来源:本站
导读:目前正在解读《N!的位数》的相关信息,《N!的位数》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《N!的位数》的详细说明。
简介:N的阶乘的位数的计算

1)Description:

N! (N的阶乘) 是非常大的数,计算公式为:N! = N * (N - 1) * (N - 2) * ... * 2 * 1)。现在需要知道N!有多少(十进制)位。

input:每行输入1个正整数N。0 < N < 1000000

output:对于每个N,输出N!的(十进制)位数。

input:32000 1000000

output:130271 5565709

2)算法分析:

对于任意一个给定的正整数a, 假设10^(x-1)<=a<10^x,那么显然a的位数为x位,又因为log10(10^(x-1))<=log10(a)<(log10(10^x)) 即x-1<=log10(a)<x 则(int)log10(a)=x-1, 即(int)log10(a)+1=x 即a的位数是(int)log10(a)+1,我们知道了一个正整数a的位数等于(int)log10(a) + 1,现在来求n的阶乘的位数:假设A=n!=1*2*3*......*n,那么我们要求的就是(int)log10(A)+1,而log10(A)=log10(1*2*3*......n) (根据log10(a*b) = log10(a) + log10(b)有)=log10(1)+log10(2)+log10(3)+......+log10(n)所以n的阶乘的位数等于(int)(log10(1)+log10(2)+log10(3)+......+log10(n)) + 1

3)源代码:

#include<stdio.h>

#include<math.h>

int main()

{

int n,i;

double a;

while(scanf("%d",&n)!=EOF)

{

a=0;

for(i=1;i<=n;i++)

{

a=a+(log10(i));

}

printf("%dn",(int)a+1);

}

}

提醒:《N!的位数》最后刷新时间 2024-03-14 00:55:52,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《N!的位数》该内容的真实性请自行鉴别。