题目描述
输入一个正整数n。输出n!的最高位上的数字。
输入
输入一个正整数n(n不超过1000)。
输出
输出n!的最高位上的数字。
样例输入 Copy
1000
样例输出 Copy
4
#include<stdio.h>
int main()
{
int n,i,j;
double s;//为避免数据溢出问题
//所以用double类型
scanf("%d",&n);
s=1.0;
for(i=1;i<=n;i++)
{
s=1.0*s*i;
while(s>=100)//当s大于一百时,把s/10,把s保持在两位数内
//可能有疑问,为什么不直接保留为一位数,因为double在保留最终的几位小数的时候
//为自动四舍五入,出现误差
{
s=s/10;
}
}
if(s<10)//当s小于10的时候,直接不保留小数点输出
{
printf ("%.0f",s);
}
else//当s大于10的时候,将s转换为int类型,这样就可避免四舍五入的问题
{
int ss;
ss=(int) s;
printf("%d\n",ss/10);
}
return 0;
}
在hautoj上同样适用