题目大意是求n!的从右边数第一个非零数字
做法是,对于每次乘的结果把结尾的零都去掉(利用不断除10),然后取最低的几位(利用%100000),最后输出结果的个位。
这怕是USACO上代码最短的一道题了吧
/*
ID: 15659801
LANG: C
TASK: fact4
*/
#include <stdio.h>
#include <stdlib.h>
int main ()
{
freopen ("fact4.in", "r",stdin);
freopen ("fact4.out", "w",stdout);
int i,n,ans=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
ans*=i;
while(ans%10==0)
ans/=10;
ans%=10000;
}
printf("%d\n",ans%10);
fclose(stdin);
fclose(stdout);
exit (0);
}