题意是求n!的末尾第一个不为0的数字。
不用大数,特别的处理。
代码:
#include <stdio.h>
const int maxn = 10000 + 1;
int f[maxn];
int main()
{
#ifdef LOCAL
freopen("in.txt", "r", stdin);
#endif // LOCAL
f[0] = 1;
for (int i = 1; i <= 10000; i++)
{
f[i] = f[i - 1] * i;
while (f[i] % 10 == 0)
f[i] /= 10;
f[i] %= 100000;//一定要至少保留后五位非零位(五位以上要注意int型溢出,因此取五位最佳),因为后五位非零位的进位(极限情况3125,即5^5)会影响到最后的非零位
}
int n;
while (scanf("%d", &n) == 1)
{
printf("%5d -> %d\n", n, f[n] % 10);
}
return 0;
}