题目:1089
题目描述
输入一个正整数n。输出n!的最高位上的数字。
输入
输入一个正整数n(n不超过1000)。
输出
输出n!的最高位上的数字。
样例输入
1000
样例输出
4
提示
注意double类型溢出问题。
#include <stdio.h>
int main()
{
double fact = 1; //为防止数据溢出,定义乘积为浮点型数据
int n;
scanf("%d", &n);
while (n >= 1) //根据阶乘的公式,循环到n为1
{
fact *= n;
while (fact >= 10) //乘积fact进行减位
{
fact /= 10;
}
n--;
}
printf("%d", (int)fact); //强制把浮点型数据变为整型数据
return 0;
}