题意:给你一个整数N,求N的阶乘的最高位是几。
数字太大,直接计算无法计算。这道题巧妙的运用了double小数的运算,每次相乘的时候,如果flag>=10,就来个循环每次除以10,将整数变成小数,每次移位,直到flag<10,然后继续进行阶乘运算。最后%0.f取整输出flag这个小数就行了。
#include<stdio.h>
int main()
{
double fact,n,i;
scanf("%lf",&n);
fact=1;
for(i=1;i<=n;i++)
{
fact=fact*i;
while(fact>=10)
fact=fact/10;
}
printf("%.0f",fact);
return 0;
}
很简单的一道题,不过用到的方法很巧妙。