#include <stdio.h>
#include <stdlib.h>
#include <math.h>//这里是我最想说的,codeblocks不严格,加不加这个数学头文件都行,但再杭电OJ上如果不加的话就是过不了。
//本题若直接相乘肯定会溢出的,所以利用n!的位数等于log10(1)+log10(2)+....log10(n)进行求解
int main()
{
int n,j,x,i;
double sum;
scanf("%d",&n);
for(j=1;j<=n;j++)
{
sum=0.0;
scanf("%d",&x);
for(i=1;i<=x;i++)
{
sum+=(log10(i));
}
printf("%d\n",(int)(sum)+1);一个数的位数=(int)(log10(这个数))+1
}
return 0;
}
杭电OJ1018--计算一个数的阶乘的位数
最新推荐文章于 2022-11-01 21:29:54 发布