阶乘的最高位

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 15:57   1369   0

阶乘的最高位

题目描述

输入一个正整数n。输出n!的最高位上的数字。

输入

输入一个正整数n(n不超过1000)。

输出

输出n!的最高位上的数字。

样例输入

1000

样例输出

4

提示

来源

错误代码
#include<stdio.h>
int main()
{
int n,i,s=1,j,a=0,k,g=1,y;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s=s*i;
}
j=s;
if(j<10)
{
printf("%d",j);
}
else
{
while(j>=1)
{
j=j/10;
a++;
}
for(k=1;k<a;k++)
{
g=g*10;
}
y=s/g;
printf("%d",y);
}


}

错误原因
没有注意数据溢出问题,long long int 也不能存放

思路:每次取所求得阶乘的最高位
正确代码
#include<stdio.h>
int main()
{
int n,i,j;
double s=1.0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s=1.0*s*i;
while(s>=10)
{
s=s/10;
}
}
printf("%.0lf\n",s);
return 0;
}



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP