/*要求 N!的位数 ,可以用 log10(N!)
又因为 log10(a*b)=log10(a)+log10(b) */
#include<stdio.h>
#include<math.h>
int main()
{
int t,n;
int i;
double sum;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
sum=0;
for(i=1;i<=n;i++)
sum+=log10(i*1.0);
/* log函数应用
1、函数 log是以 e为底的,log10是以 10为底的
2、double log10(double x)
即要求所求数为 double型,而且他的返回值也为double型 */
printf("%d\n",(int)sum+1);
}
return 0;
}
又因为 log10(a*b)=log10(a)+log10(b) */
#include<stdio.h>
#include<math.h>
int main()
{
int t,n;
int i;
double sum;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
sum=0;
for(i=1;i<=n;i++)
sum+=log10(i*1.0);
/* log函数应用
1、函数 log是以 e为底的,log10是以 10为底的
2、double log10(double x)
即要求所求数为 double型,而且他的返回值也为double型 */
printf("%d\n",(int)sum+1);
}
return 0;
}
本文介绍了一种通过计算对数来确定N!位数的方法。利用log10(N!)并借助log10(a*b)=log10(a)+log10(b)的性质,文章提供了一个C语言程序实现,该程序能够接收用户输入的整数N,并输出N!的位数。
1万+

被折叠的 条评论
为什么被折叠?



