【转】N!的位数
0赞
发表于 2016/9/5 9:38:28
阅读(918)
1)Description:
N! (N的阶乘) 是非常大的数,计算公式为:N! = N * (N - 1) * (N - 2) * ... * 2 * 1)。现在需要知道N!有多少(十进制)位。
input:每行输入1个正整数N。0 < N < 1000000
output:对于每个N,输出N!的(十进制)位数。
input:320001000000
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) 3)源代码: #include #include 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("%d\n",(int)a+1);
}
}