题目大意:求n!的低位不为零的第一个数。
解题思路:每次相乘把末尾的0去掉,但是为了防止末尾为0需要用到前面的数,就需要保留几位数。因为int型可以支持99999 * 10000 的数据大小,所以可以保留后五位数。
#include<stdio.h>
int n;
int main() {
while(scanf("%d", &n) == 1) {
if(n == 0)
printf(" 0 -> 1\n");
else {
int sum = 1;
for(int i = 1; i <= n; i++) {
sum *= i;
while(sum % 10== 0) {
sum /= 10;
}
sum %= 100000;
}
printf("%5d -> %d\n", n, sum % 10);
}
}
return 0;
}