题目大意:求小于10000的非负数的阶乘倒数第一位非0 的数。
解题思路:一个一个乘,但是只保存题目要求的位数。全乘完后输出倒数第一个非 0 的数。
注意点:一定题目要求几位就保存几位,不然WA。
#include<cstdio>
int main() {
int num , tem , sav;
while( scanf("%d",&num) != EOF ) {
for( sav = 1 ,tem = 1; tem <=num ; tem++ ) {
sav *= tem;
while( !(sav %10))
sav /= 10;
sav = sav%100000;
}
while( !(sav%10) )
sav /=10;
sav = sav%10;
printf("%5d -> %d\n",num,sav);
}
return 0;
}