求某个数的阶乘位数用log10(n)+1,不要忘记头文件#include<math.h>
一开始我的思路是通过循环先求出n阶乘的具体数字,如下
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
if(n==0||n==1){
printf("1");
return 0;
}
int sum=1;
for(int i=2;i<=n;i++){
sum*=i;
}
int len=log10(sum)+1;
printf("%d",len);
return 0;
}
当n数字小时,输出的答案位数是正确的,当n稍微大一点就会越界,
最后要用数学思维方法去总结规律
由以上思路我们可以编写如下代码
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
if(n==0||n==1){
printf("1");
return 0;
}
double sum=0;
for(int i=2;i<=n;i++){
sum+=log10(i);
}
int p=sum;
printf("%d",p+1);
return 0;
}
小白刚入坑,写得不好请见谅,欢迎各位大佬的建议