题目 L: 阶乘的最高位
时间限制: 1 Sec 内存限制: 128 MB提交: 18 解决: 14
[ 提交][ 状态][ 论坛]
题目描述
输入一个正整数n。输出n!的最高位上的数字。
输入
输入一个正整数n(n不超过1000)。
输出
输出n!的最高位上的数字。
样例输入
1000
样例输出
4
提示注意:1000! lomg long int 都会超限,double也会的
#include<stdio.h>
int
main()
{
double
n,i,sum=1;
scanf
(
"%lf"
,&n);
for
(i=1;i<=n;i++)
{
sum=sum*i*1.0; //将数一个一个的乘起来,
while
(sum>=10) //如果数一大于10,则一直除的是个位数,sum要定义为double或float,因为小数点后一位也会影响最高位的数,float没试过你们可以试试
sum=sum/10;
}
printf
(
"%d\n"
,(
int
)(sum)); //最后输出的只是最高位,故对sum强制转化为int;
return
0;
}
/**************************************************************
Problem: 1386
User: 141210145
Language: C
Result: 正确
Time:0 ms
Memory:964 kb
****************************************************************/